选择题   有以下程序:
    #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);
    }
    程序运行后的输出结果是______。
 
【正确答案】 D
【答案解析】本题中首先定义了一个一维数组。并初始化,由于定义该数组的时候省略了长度,因此该数组的长度为初始化时候赋初值的个数即为12。数组名a代表数组的首地址,所以*p=a+5语句使得p指向数组的第6个元素,而在程序中定义了一个指针q并让它指向空,实际上程序并没有在内存中为指针q开辟存储空间,这样给q赋值不允许的,故该程序运行后报错。