看例子:
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没有意义
原文:https://www.cnblogs.com/aiden-zhang/p/11405709.html