我有点困惑。下面的代码数组和指针表示法
main(){
int i=3;
char p[10]="abcdefdeg";
char *ptr;
ptr=p;
printf("%p\n",&p[i]); // Gets a normal address
printf("%p\n",ptr[i]); // Gets 0x64
printf("%p\n",(ptr+i)); // Gets a normal address
}
为什么PTR [i]和(PTR + I)得到不同的结果?这两个标记不是具有相同的含义吗?看起来,当我用指针数组符号表示解释地址的内容作为地址...但我不知道为什么
如果你想要访问数组中的元素,你想'*(ptr + i)' – MightyPork 2015-02-06 19:23:13
@MightyPork不,我不想要内容,我想要地址。我只是不知道为什么我不能用ptr [i]来做。 – BsD 2015-02-06 19:25:29
因为'ptr [i]'实际上只是'*(ptr + i)'的糖' – MightyPork 2015-02-06 19:26:22