问题 单项选择题

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

C.611

D.510

答案

参考答案:A

解析: 本题中首先定义了一个一维数组a并初始化,该数组的长度为初值的个数即12。数组名a代表数组的首地址,所以*p=a+5语句使得p指向数组的第6个元素,还一个指针变量q,q为空指针,实际上程序并没有在内存中为指针q开辟存储空间。语句 *q=*(p+5);向q的存储空间赋值是错误的,故该程序运行后报错。

单项选择题
判断题