|
原帖由 hjack 于 2006-6-22 14:39 发表
上面搞错了,a是代表这个数组,指向的是数组的第一个元素,
其实&a也是指向数组第一个元素的地址。并不是a这个变量的地址。
补充一点:
a和&a都是指向指向数组第一个元素的地址,但意义不同。
a是数组的首地址,即a[0]的地址,&a是数组a的首地址。这个说起来比较难,举个例子吧。
- int main()
- {
- int a[3]={1,2,3};
- int *p=a+1;
- int *q=(int*)(&a+1);
- printf("%d,%d\n",*(p-1),*(q-1));
- system("pause");
- return 0;
- }
复制代码
输出结果是:1,3
a+1指向”2“, (&a+1)指向a数组尽头的下一个地址(这个用二维数组来解释,如b[2][2],&b[0]+1就指向了b[1][0]的地址),减一后指向a数组的最后一个元素3 |
|