问题
单项选择题
有以下程序
# 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",*p,*q);
程序运行后的输出结果是
A.运行后报错
B.6 6
C.6 11
D.5 10
答案
参考答案:A
解析: 本题考核的知识点是通过指针引用数组的元素的方法.本题中首先定义了一个一维数组a并初始化,由于定义该数组的时候省略了长度,因此该数组的长度为初始化时候赋初值的个数即为12。数组名a代表数组的首地址,所以*p=a+5语句使得p指向数组的第6个元素,而在程序中定义了一个指针q并让它指向空,实际上程序并没有在内存中为指针q开辟存储空间,这样给q赋值不允许的,故该程序运行后报错。所以,4个选项中选项A符合题意。