char aa[5][7];
char **ss;
char a[7];
char *s;
s = a; /*为什么这个可以*/
ss = aa; /*这个却不可以*/
s是一个指向字符的指针,a是一个有7个字符的数组,a[0]是a的第一个字符。s=a相当于s=a[0],就是让s指向a[0]的地址,这是可以的。也就是说,s可以等于a。
ss是一个指向
字符指针的的指针,相当于ss是指向像s这样的指针的指针;
aa是一个有5个元素的数组,其中每个元素是1个有7个字符的数组,相当于aa含有5个像a这样的字符数组,aa[0]是其中第一个字符数组。
ss=aa相当于ss=aa[0],也就是让ss指向aa[0]的地址。
我纠结的是,既然s可以指向a,为啥ss不可以指向aa啊?
是不是因为ss是字符指针的指针,而aa[0]只能当做字符指针用啊?
二维数组char aa[5][7]的首地址是相当于字符指针还是相当于字符指针的指针呢?