看例子:
- int main( )
- {
- char a[]="hello";
- char *p ;
- p="zhangning";
- printf("&p=%x\n",&p);
- printf("p=%x\n",p);
- printf("p=%s\n",p);
- printf("a=%x\n",a);
- printf("a=%s\n",a);
- printf("&a=%x\n",&a);
- return 0;
- }
注意: 1, 对于数组, a 指首元素地址,&a 指整个数组 (对象) 的首地址, 故 a 和 & a 值相等.
2,a+1 跨了一个 sizeof(a[0])是第二个元素地址, 但 & a+1 是跨了一个 sizeof(a)的地址.
3,a[1] = *(a+1), 同样 p[1] = *(p+1).
4, 表示字符串时 & a 和 a 指向该字符串的首地址, p 指向字符串首地址,&p 没有意义
来源: http://www.bubuko.com/infodetail-3168547.html