有以下程序 #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

admin2009-04-15  20

问题 有以下程序    #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

答案1

解析 本题中首先定义了一个一维数组。并初始化,由于定义该数组的时候省略了长度,因此该数组的长度为初始化时候赋初值的个数即为12。数组名a代表数组的首地址,所以*p=a+5语句使得p指向数组的第6个元素,而在程序中定义了一个指针q并让它指向空,实际上程序并没有在内存中为指针q开辟存储空间,这样给q赋值不允许的,故该程序运行后报错。
转载请注明原文地址:https://kaotiyun.com/show/AOXp777K
0

随机试题
最新回复(0)