永发信息网

c 指针

答案:2  悬赏:10  手机版
解决时间 2021-05-04 00:51
  • 提问者网友:wodetian
  • 2021-05-03 18:44

 p[i]=*(p+i);

这个是怎么换算的????

最佳答案
  • 五星知识达人网友:duile
  • 2021-05-03 19:47

你这里的意思应该是两边等价的吧。首先要了解指针:


有一个内存地址编号 0 1 2  3  4  5 。。。。。。


当然这是假定的,我定义了一个char p[5];因为sizeof(char)等于1也就是说其在内存的偏移量就是1。假设首地址p = 0; 0是内存的地址编号。p是首地址代表的是地址的编号,而p[i] 就是编号为p+i上放的数据。


而*(p+1)就是代表编号放的数据。区别:内存地址 与 内存空间的数据。


如上 print p 等于0 则print p+i 就等于i .这是地址。当我定义int p[i]时,对于32-字节的计算机其内存地址就是p+4*i......

全部回答
  • 1楼网友:逃夭
  • 2021-05-03 21:11
*p指向数组得首地址,*(p+i)指向数组的第i个元素,因为数组是连续得内存空间
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯