中易网

c 语言用指针互换2个数的值

答案:1  悬赏:80  
解决时间 2021-03-14 19:47
#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、在看教程的时候,说到,静态变量的地址是不能变的(任何语言都是这样),那为为什么动态变量可以?
最佳答案
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变换的目的。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
常见的节流装置取压方式有( ) (A) 环室取
泓福饭店这个地址在什么地方,我要处理点事
函件数 包件数指什么?
我的电脑下载的一些软件的字都特别小是怎么回
我爷爷有个回迁的房子,没有房产证,有灭籍单
我是笔记本,比较老的电脑了,现在装win8,第
石牛山麒麟床垫怎么去啊,有知道地址的么
请问浚县雅居美域的三号楼何时交房
我想要两个三明治和一个冰激凌化成英语
在信阳息县办卫生许可证需要多少钱?
长寿苑南门怎么去啊,有知道地址的么
介绍家乡的湖小湖小片段
我,50男开车去西藏,寻一个搭车AA制的伙伴,有
豆浆机什么牌子、什么型号好?容易清洗的那种
怎样把文件夹的照片放在邮箱里?
推荐资讯
广汽传祺GS5,纳智捷U6,起亚智跑哪个车好?
如果拘捕令下来了,但是一直找不到那犯罪人,那
工业屋顶3m分布式光伏需要备案吗
洗澡的电热水器使用说明书怎么注水第一次怎么
问一个很深奥的问题。。。
魅族魅蓝m1 note卡2能不能用4g网
莲塘网络中心在什么地方啊,我要过去处理事情
葡萄上打了2.4滴丁酯会死吗
安然纳米汗蒸馆(谭惠路店)地址在哪,我要去那
厦门市观音山国际商务运营中心10号楼
有做浆水豆瘸的吗?1斤干豆出几斤豆瘸?
开尖头大货车跟平头大货车视觉上有什么不同,
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?