这个C程序*(p+i)=i; 什么意思,直接写*p=i;结果不是一样的吗?为什么要那样写?

2025-04-06 20:58:20
推荐回答(2个)
回答1:

*(p+i)=i;是指将i(i是变化的),赋给以p为首址的控制,假设p的地址为0x20,则第一个数为0(i从0开始,到9),0x21地址的值为1,以后的地址类似。
如果仅是*p=i;则只会在0x20(还是假设p的首址为0x20),变化值(即0x20的值依次为0,1,2....),0x21及后续地址不会被赋值。

回答2:

p=a;
这句话表示p是a[0]的地址
p+i就是a[0+i]也就是a[i]的地址
*(p+i)=i就等价于a[i]=i
而*p=i等价于a[0]=i

最后程序的输出是:
a[0]=0
a[1]=1
a[2]=2
a[3]=3
a[4]=4
a[5]=5
a[6]=6
a[7]=7
a[8]=8
a[9]=9