问题 单项选择题

有以下程序:
#include < stdio. h >
main( )
ehar str[ ] [10] = "China" ," Beijing" , * p = str[o];
printf( "% s \n", p + 10);

程序运行后的输出结果是( )。

A.China

B.Beijing

C.ng

D.ing

答案

参考答案:B

解析: C语言中二维数组是按行存放的,即在内存中先顺序存放第一行的元素,再存放第二行的元素。此题二维数组str[][10]第1行的前5个元素为'C','h','i','n','a',第6个元素为'\0',后4个元素为空字符。紧接着内存单元存放数组第2行的元素,即从str[1][0]到 str[1][9]分别为'B','e','i','j','i','n','g',第8个元素为'\0',后两个元素为空字符。执行 *p=str[0]后,指针p就指向了二维数组str的首地址,p+10指向从首地址依次向后的第11个存储单元即字符,B,的地址,所以输出Beijing,故答案为B。

单项选择题
单项选择题