数组有数组表达法和指针表达法 假设一个数组double target[5]
当我在函数的形参部分声明这个数组时 我可以写double target[5]
但是用指针表达的时候应该写double * target
我想问的是这里的指针表达法应该是表达了数组首元素的地址 也就是其类型应该是整型
所以不是应该写int * target吗
c语言中数组的指针表示法
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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);
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
- ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
- ¥20 有关区间dp的问题求解
- ¥15 多电路系统共用电源的串扰问题
- ¥15 slam rangenet++配置
- ¥15 有没有研究水声通信方面的帮我改俩matlab代码
- ¥15 ubuntu子系统密码忘记
- ¥15 保护模式-系统加载-段寄存器
- ¥15 电脑桌面设定一个区域禁止鼠标操作
- ¥15 求NPF226060磁芯的详细资料