c语言题利用指针交换数值,C语言指针地址交换后数值交换的问题?

满意答案

00e27ab806e4881f8254fe7ae8741834.png

hggggddfrr

2020.01.03

00e27ab806e4881f8254fe7ae8741834.png

采纳率:44%    等级:9

已帮助:112人

首先理解啥是指针?通俗理解就是一个地址,该地址指向某个对象,对象可能是变量,也可能是函数地址等。

以程序为例,假设a,b,c的地址分别为A,B,C.

执行func()时形参的值分别为A,B,C. 分别用a,b,c变量表示,注意这里不要和main函数中a,b,c混淆.

temp = a, a = b, b = temp,意思为交换a,b的值,语句执行后, a = B, b= A. temp= A.

printf ("a=%d,b=%d\n", *a, *b); 就分别输出地址B和A的内容,即 7 5

*temp = *b, *b = *c, *c = *temp;

*temp = *b;意思为将A地址所在内容赋值给A地址所在内容,那么A地址内用不变. A:5

*b = *c;意思为将C地址内容赋值给A地址所在内容,A地址所在内容变为 A:3.

*c = *temp;意思为将A地址所在内容赋值给C地址处,C地址所在内容变为 C: 3.

printf ("a=%d,b=%d,c=%d\n", *a, *b, *c );即分别打印B,A,C地址内容,即 7 3 3

最后main函数中的打印a,b,c即为 3 7 3,因为main函数中的a,b,c所对应的地址还是A,B,C,不会受到fun中函数的影响.

00分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值