weixin_40993974 2017-11-28 14:57 采纳率: 100%
浏览 2013
已采纳

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

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

  • 写回答

6条回答 默认 最新

  • Debug_dodge 2017-11-28 15:43
    关注

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

    我给你举个例子吧

    从地址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);
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料