一道C语言指针问题!求教高人,线上等!

来源:百度知道 编辑:UC知道 时间:2024/05/12 13:40:24
main()
{char str[][10]={"China","Beijing"},*p=str;
printf("%s\n",p+10;}
程序运行后的输出结果是?

麻烦请详细写出解题思路,万分感谢!

结果是
Beijing

本质上,二维数组是以一维的形式保存在内存中的,也就是说:
原来定义的二维数组:
C h i n a 0 0 0 0 0
B e i j i n g 0 0 0
其实是连在一起的:
C h i n a 0 0 0 0 0 B e i j i n g 0 0 0
定义char *p=str;就是让p指向了开头'C',然后
printf("%s\n",p+10)从p+10的位置开始输出一个字符串,当然了,这里一定要注意字符串以'\0'结束
p+10的位置就是B,从那里输出东西,直到0结束,就是输出
Beijing

??二维字符串数组?