weixin_40993974
weixin_40993974
采纳率100%
2017-11-28 14:57

c语言中数组的指针表示法

已采纳

数组有数组表达法和指针表达法 假设一个数组double target[5]
当我在函数的形参部分声明这个数组时 我可以写double target[5]
但是用指针表达的时候应该写double * target
我想问的是这里的指针表达法应该是表达了数组首元素的地址 也就是其类型应该是整型
所以不是应该写int * target吗

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

6条回答

  • Debug_dodge Debug_dodge 4年前

    不管什么类型的指针,表示的都是它保存的那个地址

    我给你举个例子吧

    从地址0x12345678开始8个字节分别存放了

    0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08

    指针的类型会影响你读出来几个字节,如果p是char*,*p=0x01,如果是int*,*p=0x04030201(这里采用小端法),并且解释你取出来的这些字节是会按照相应的类型去解释,比如double*的指针,读出来的数按照双精度浮点数的格式来解释

    指针的类型也会影响指针运算,如果p是char*,p+1就是地址+1=0x12345679,如果p是int*,p+1其实是地址+4(挪到下一个int的位置)=0x1234567c

    这样说你应该能明白吧,其实指针类型的作用就是告诉你怎么解释它指向的那个地址存放的数据,不同类型指针是可以强制类型转换的

    像是malloc(int size)函数,它的作用是分配size大小的一片内存,返回值是void*,因为它事先不知道你想怎么使用这片区域,如果你想开一个40字节的字符数组,那就可以

    char *p = (char *)malloc(40);
    
    
    点赞 评论 复制链接分享
  • appley1986 appley1986 4年前

    指针指向是地址,基本类型的指针指向基本类型的数据结构。double * target就表示指针指向double类型的变量target

    点赞 评论 复制链接分享
  • m0_37772350 C彬 4年前

    指针指向是地址,基本类型的指针指向基本类型的数据结构。double * target就表示指针指向double类型的变量target

    点赞 评论 复制链接分享
  • qq_38646470 龙跃十二 4年前

    楼上说指针类型不用定义,是不对的,指针是地址,准确的说指针变量是需要定义类型的比如 char* ;int*;double*;float*,struct*等等

    楼主的问题很是没有表达清楚,希望楼主表达准确些,有利于大家回答

    点赞 评论 复制链接分享
  • smile__dream smile__dream 4年前

    指针也可以算个变量吧,只是存的是地址

    点赞 评论 复制链接分享
  • zengfei_008 zengfei_008 4年前

    这个定义的是target的类型,而不是指针的类型,指针的类型不用定义。

    点赞 评论 复制链接分享

相关推荐