网游之神:数组问题

来源:百度文库 编辑:高考问答 时间:2024/04/29 13:21:50
main()
{char str[][10]={"China","Beijing"},*p=str;
printf("%s\n",p+10);
}
答案是Beijing为什么?我人为是ing能解释下吗?

应该是Beijing

str是这样存的(空的我用\0)

China\0\0\0\0\0
Beijing\0\0\0
可见虽然长度不够10,但是存储中仍用了10的空间(由定义决定),所以Beijing

str是个二维数组,也就是说是个10×2的矩阵,在赋值的时候第一行赋值China,后面的空余的也占有空间;而Beijing直接赋值给第二行(也就是从P+10开始)了。所以输出是Beijing。