这是因为 *p就是p[0],也就是第0个字符串hello,然后加1,就相当于从字符串第1个字符,也就是e开始输出字符串,自然是ello了
如果输出world,应该是 * (p+1),因为 * 优先级高于+
这是一个字符串指针数组,其中p[0]指向字符串"hello",p[1]指向字符串"world"。
printf("%s", p + 1)输出的是p+1所指向的字符串,即"hello"+1。因为p是指向"hello"的指针,所以p+1就是指向"ello"的指针。因为%p中%s格式说明符用于输出字符串,所以输出的结果就是"ello"。
因此,printf("%s",*p+1)输出为"ello"。
1.数组本身也是指针
2.p是个指针数组,那么它相当于二维数组,或者二级指针
3.*p等同于p[0],*(p+1)等同于p[1]
4.*p+1等同于p[0]+1,那么字符串的首字母就从p[0][0]变成了p[0][1]