#include
int main()
{
char str[][8] = {"Hello","Beijing"}, *p;
p = str[0];
printf("%s\n", p+8);
return 0;
}
为什么输出Beijing呢?
图中的地址为假设地址。
你可以加代码
printf("address str: 0x%p address p: 0x%p\n", str, &p); 查看实际地址
如有用,望采纳,非常感谢!
p+8就正好指向数组的第二行了。因为二维数组存储空间是连续的,每行8个字符,p+8正好跳过了第一行
用%s输出的是字符串,所以输出第二行字符串Beijing了
上面的感觉没有讲到重点哈。
你要理解指针的移动,
int *p;
p + 1,移动了多少?是4个字节
char *p;
p + 1 ,移动了多少?是1个字节;
ok。。。。看你的代码。。。
你的p 是什么?是 char *
那么p + 8 移动了多少个字节?