#include <sddio.h>
void huhuan(int * p , int * q)
{
int t;
t = *p;
*p = *q;
}
int main(void)
{
int a = 3;
int b = 5;
huhuan(&a , &b);
printf("a = %d, b = %d\n",a,b,);
return();
}
我有下面几点不明白。
1、在huhuan函数中,p和*p的值到底是多少?
p的类型是int*,*p的类型是int。这个我已经知道
2、假设变量a的地址为1000H
-----变量b的地址为2000H
-----变量t 的地址为3000H
-----变量*p的地址为4000H
-----变量*q的地址为5000H
那么这个程序在运行的时候到底是怎么执行的。(流程控制我知道,不知道是的每个变量的值的变化)。
3、在看教程的时候,说到,静态变量的地址是不能变的(任何语言都是这样),那为为什么动态变量可以?
c 语言用指针互换2个数的值
答案:1 悬赏:80
解决时间 2021-03-14 19:47
- 提问者网友:醉人眸
- 2021-03-13 23:09
最佳答案
- 二级知识专家网友:心与口不同
- 2021-03-14 00:48
1. 因为huhuan中形式参数的顺序是huhuan(int *p,int *q),main中又是用huhuan(&a,&b)调用的,所以p的值是&a(就是a的地址,具体没有表现出来,不知道),而*p值就是a的值,是3。
2. 你假设a、b和t的地址为1000H、2000H和3000H这可以,但不能再假设*p和*q了,因为*p和*q的地址就是a和b的地址1000H和2000H。
3. 任何变量一经声明或定义,其地址就不会再变了。所以这一问题本身就不严密。
另:代码中*p = *q;后少了一句*q=t;。所以你的代码达不到a、b变换的目的。
2. 你假设a、b和t的地址为1000H、2000H和3000H这可以,但不能再假设*p和*q了,因为*p和*q的地址就是a和b的地址1000H和2000H。
3. 任何变量一经声明或定义,其地址就不会再变了。所以这一问题本身就不严密。
另:代码中*p = *q;后少了一句*q=t;。所以你的代码达不到a、b变换的目的。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |