选择题
35.
有以下程序:
#include <stdio.h>
main()
{int a[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5;
*q=NULL;*q=*(p+5);
printf("%d%d<n",*q,*q);
}
程序的运行结果是______。
A、
运行后报错
B、
6 6
C、
6 11
D、
5 10
【正确答案】
D
【答案解析】
本题中首先定义了一个一维数组,并初始化,由于定义该数组的时候省略了长度,因此该数组的长度为初始化时候赋初值的个数,即12。数组名a代表数组的首地址,所以“*p=a+5”语句使得p指向数组的第6个元素,而在程序中定义了一个指针q并让它指向空,实际上程序并没有在内存中为指针q开辟存储空间,这样给q赋值是不允许的,故该程序运行后报错。
提交答案
关闭