📅  最后修改于: 2023-12-03 15:28:44.038000             🧑  作者: Mango
本篇文章是根据 印度门(GATE-CS-2014-(Set-3))考试第60题所编写的,主要讲解了一个程序的运行结果。
给定以下程序的输出值:
#include <stdio.h>
int main()
{
int i, x[5], *p;
x[0] = 10;
p = x;
printf("%d ", *p);
p++;
printf("%d ", *p);
p += 2;
printf("%d ", *p);
return 0;
}
(A) 10 11 13
(B) 10 0 0
(C) 10 11 32766
(D) 10 32766 32766
本程序的主要功能为输出一维数组中的数据。
首先,定义了一个长度为 5 的一维整型数组 x
,变量 i
,以及整型指针 p
,并将 x[0]
赋为 10。
int i, x[5], *p;
x[0] = 10;
p = x;
变量 p
指向了数组 x
的首元素,也就是 x[0]
,指针 p
指向的数据是 10
,因此第一个 printf()
函数输出 10
。
printf("%d ", *p);
接下来,指针 p
指向了数组 x
中的第二个元素 x[1]
,但是并没有对其赋值,因此输出的是未知的值。
p++;
printf("%d ", *p);
之后,指针 p
先加 2 步,指向了数组 x
中的第三个元素 x[2]
,输出的是 13
,因为在 x[1]
和 x[2]
中的内存空间中存储了其它程序的运行数据,因此这里的结果可能会有所不同,但无论如何输出的数值都是未知的。
p += 2;
printf("%d ", *p);
因此,本题答案为 (D) 10 32766 32766。
本程序主要讲解了通过指针来遍历一维数组的方法,并且讲解了 C 程序中未初始化变量值的情况。
# 介绍
本篇文章是根据 印度门(GATE-CS-2014-(Set-3))考试第60题所编写的,主要讲解了一个程序的运行结果。
## 题目
给定以下程序的输出值:
```c
#include <stdio.h>
int main()
{
int i, x[5], *p;
x[0] = 10;
p = x;
printf("%d ", *p);
p++;
printf("%d ", *p);
p += 2;
printf("%d ", *p);
return 0;
}
(A) 10 11 13
(B) 10 0 0
(C) 10 11 32766
(D) 10 32766 32766
本程序的主要功能为输出一维数组中的数据。
首先,定义了一个长度为 5 的一维整型数组 x
,变量 i
,以及整型指针 p
,并将 x[0]
赋为 10。
int i, x[5], *p;
x[0] = 10;
p = x;
变量 p
指向了数组 x
的首元素,也就是 x[0]
,指针 p
指向的数据是 10
,因此第一个 printf()
函数输出 10
。
printf("%d ", *p);
接下来,指针 p
指向了数组 x
中的第二个元素 x[1]
,但是并没有对其赋值,因此输出的是未知的值。
p++;
printf("%d ", *p);
之后,指针 p
先加 2 步,指向了数组 x
中的第三个元素 x[2]
,输出的是 13
,因为在 x[1]
和 x[2]
中的内存空间中存储了其它程序的运行数据,因此这里的结果可能会有所不同,但无论如何输出的数值都是未知的。
p += 2;
printf("%d ", *p);
因此,本题答案为 (D) 10 32766 32766。
本程序主要讲解了通过指针来遍历一维数组的方法,并且讲解了 C 程序中未初始化变量值的情况。