char *s;
printf("%p",s);
这个表示 s 的单元中所保存的地址。即字符串首地址。这个字符串首地址单元内存放的是一个字符。
printf("%p",&s);
这个表示变量本身所在内存单元地址。即保存了这个字符串首地址的那个单元的地址。
字符串常量的本质是地址。字符串常量的本质表现是代表它的第一个字符的地址。
C语言中操作字符串是通过它在内存中的存储单元的首地址进行的,这是字符串的终极本质。
char ** 与char * a[ ] ;
先看 char *a [ ] ,由于[ ] 的优先级高于* 所以a先和 [ ]结合,他还是一个数组,数组中的元素才是char * ,前面讲到char * 是一个变量,保存的是地址。