有以下程序 #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); } 程序运行后的输出结果是
时间: 2023-09-16 07:12:48 浏览: 91
字符串函数string.h应用举例.-综合文档
程序运行后的输出结果是不确定的,可能会出现运行时错误。
解释:
- 定义了一个整型数组 a,并初始化前 12 个元素为 1~12。
- 定义了一个整型指针 p,指向数组 a 中第 6 个元素(即值为 6 的元素)的地址。
- 定义了一个空指针 q,未指向任何地址。
- 执行语句 *q=*(p+5),将数组 a 中第 11 个元素(即值为 11 的元素)的值赋给空指针 q 所指向的地址,但空指针 q 没有指向任何地址,因此会出现段错误(Segmentation Fault)或其他运行时错误。
- 在 printf 函数中,使用指针 p 输出其指向的值,但此时指针 p 指向的值已经不确定了,因为在执行 *q=*(p+5) 时可能已经发生了内存错误。同时,空指针 q 也没有指向任何地址,因此无法输出其指向的值。
- 因此,程序的输出结果是不确定的,可能会出现运行时错误。
阅读全文