📜  门| GATE-CS-2007 |第 44 题(1)

📅  最后修改于: 2023-12-03 14:58:27.465000             🧑  作者: Mango

GATE-CS-2007 | 第 44 题

题目描述:考虑以下代码段。假设 x 和 y 是整型变量,且 p、q 和 r 是整型指针变量。

int* p;
int* q;
int* r;
int x = 10, y;
p = &x;
q = &y;
r = p;
*p = 20;
q = r;

将代码段执行完毕后,以下哪个语句是正确的?

(A) x 和 y 的值都是 10 (B) x 和 y 的值都是 20 (C) x 和 y 的值都是 0 (D) x 的值是 20,y 的值是不确定的

分析

首先,在代码的开头,定义了三个整型指针变量 p、q 和 r。 然后,定义了一个整型变量 x,并将其地址赋给指针变量 p。 接着,定义了一个整型变量 y,将其地址赋给指针变量 q。 最后,将指针变量 r 的值设置为指针变量 p 的值,即 x 的地址。

然后,使用解引用操作符 * 将指针变量 p 的值(即 x 的地址)指向的变量赋值为 20,即修改了 x 的值为 20。

最后,将指针变量 q 的值设置为指针变量 r 的值,即将 q 指向了 x。

结果

根据代码的执行过程和分析,可以得出以下结论:

x 的值是 20,因为在代码中使用了指针变量 p 将 x 的值修改为 20。 y 的值是不确定的,因为在代码中指针变量 q 没有指向有效的变量。

所以,选项 (D) x 的值是 20,y 的值是不确定的 是正确的。


代码片段按照 markdown 格式如下:

int* p;
int* q;
int* r;
int x = 10, y;
p = &x;
q = &y;
r = p;
*p = 20;
q = r;

答案为:(D) x 的值是 20,y 的值是不确定的