我们初学时经常把指针当成地址用,其实指针和地址是有差别的。
指针是一个变量,存放的是地址。很好理解,但是当指针存放字符串地址时,就麻烦多了。
假设有一个字符串
char a[22]="4544adas44456"; char *p = a; printf("%p\n",p); //0x7ffdf03a6010 printf("%p\n",*p); //0x34 printf("%p\n",p[0]); //0x34 printf("%p\n",a); //0x7ffdf03a6010 //a+1 --> a + 1 printf("%p\n",&a); //0x7ffdf03a6010 //&a+1 --> a + sizeof(a) printf("%p\n",&a[0]); //0x7ffdf03a6010 //
指针、字符串的变量名、首地址、第一个字符的地址 是相同的位置。
但是
char a[22]="