📌  相关文章
📜  国际空间研究组织 | ISRO CS 2014 |问题 57(1)

📅  最后修改于: 2023-12-03 15:37:15.164000             🧑  作者: Mango

国际空间研究组织 | ISRO CS 2014 |问题 57

该题为ISRO CS 2014考试的第57个问题,题目描述如下:

在以下C程序中,当语句“q = p”执行后,q和p的值分别是什么? 
int main() 
{ 
   int x=10, y=20; 
   int *p=&x, *q=&y; 
   p=q; 
   q=p; 
   printf("%d, %d", *p, *q); 
   return 0; 
} 

这道题目考查的是C语言指针的基本概念和操作技巧。

解题思路:

首先,我们需要知道的是,p和q是两个指向整型变量的指针,p的初始值指向变量x的地址,q的初始值指向变量y的地址。

其次,对于指针的赋值操作,只是将指针变量的值(即地址)改变了,并不会改变指针变量所指向的内存单元中的值。

在程序的第6行中,“p=q”这一语句执行后,p指向了变量y的地址,即p和q都指向了变量y的地址。

接着在程序的第7行中,“q=p”这一语句又执行了一次指针变量的赋值操作,将q指向了变量x的地址,即p和q都指向了变量x的地址。

最后,在程序的第8行中,将指针变量p和q所指向的内存单元中的整型值输出。此时,p和q都指向了变量x的地址,因此p和q的值都是10。

因此,该程序输出的结果为“10, 10”。

代码实现:

## 解题思路:

- 首先,我们需要知道的是,p和q是两个指向整型变量的指针,p的初始值指向变量x的地址,q的初始值指向变量y的地址。
- 其次,对于指针的赋值操作,只是将指针变量的值(即地址)改变了,并不会改变指针变量所指向的内存单元中的值。
- 在程序的第6行中,“p=q”这一语句执行后,p指向了变量y的地址,即p和q都指向了变量y的地址。
- 接着在程序的第7行中,“q=p”这一语句又执行了一次指针变量的赋值操作,将q指向了变量x的地址,即p和q都指向了变量x的地址。
- 最后,在程序的第8行中,将指针变量p和q所指向的内存单元中的整型值输出。此时,p和q都指向了变量x的地址,因此*p和*q的值都是10。

因此,该程序输出的结果为“10, 10”。

## 代码实现:

```c
int main() 
{ 
   int x=10, y=20; 
   int *p=&x, *q=&y; 
   p=q; 
   q=p; 
   printf("%d, %d", *p, *q); 
   return 0; 
}