有以下程序   main( )   {char str[ ][10]={"China","Beij

有以下程序   main( )   {char str[ ][10]={"China","Beij有以下程序   main( )   {char str[ ][10]={"China","Beijing"},*p=str;    printf("%s\n",p+10);   }   
程序运行后的输出结果是
A)China B)Bejing C)ng D)ing

答案选B但是我不知道为什么 麻烦写出过程谢谢
最新回答
予情

2024-05-04 02:34:46

str是二维字符数组,有2行10列,内容为:
C h i n a \0 * * * *
B e i j i n g \0 * *
字符指针p指向数组str的首元'C',则p+10指向首元C向后偏移十个字节的位置。由于多维数组在内存中是线性存放的,第二行的首元紧跟在第一行的尾元之后,因此p+10指向第二行的首元'B'。以%s格式输出时,会从指针位置开始依次向后输出每个字符,直到遇到\0结束。因此输出结果为Beijing。
笑里藏泪

2024-05-04 10:05:18

可以这么想:str是一个有2行10列的二维数组,p指向数组的首位置,移动是个字符位置恰好到第二行的第一个字符的位置,然后以字符串的格式输出到‘\0’结束,所以输出beijing