请问这个问题中*P是多少?
main() {char*a={"one","two"},**p=a;
printf("%s,",*(p++)+1);
printf("%c\n",**p-1);
答案是ne,s
数组中的英文是另外算的吗? char*a是字符指针数组,数组中每个元素都是一个字符指针,相当于二维数组
**p=a是指向字符指针的指针,类型也是char
*(p++)相当于先使用p指针的值即是a *p就是a,数组名称其实实质也是一个指针 *a就是a
*(a+1) 就是a *(p++)先得出来的值就是“one”字符串,字符串其实也是一种字符指针
*(p++)+1就是字符串"one"偏移到第二位,那么得到的值就是“ne”
然后最后处理p++ 这时候*p就是“two”了指向的是a
**p就相当于a 取得是字符串第一个字符的值 得出来是字符‘t’,而‘t’-1 在ASCII中得到的是字符's'
你理解下 不明白可以再问
页:
[1]