为了账号安全,请及时绑定邮箱和手机立即绑定

自定义函数交换两个变量的值怎么理解?求指教!

自定义函数交换两个变量的值怎么理解?求指教!

C
荒小北158 2017-01-04 10:58:07
void funa(int *x , int *y){    int t = *x;    *x = *y;    *y = t;}代码是这样的        这样的一个函数体里面  可以理解是  交换两个变量的地址对吗?   但是怎么把值返回main()呢?funa()里面的参数作用域不就只能在它自己的函数体吗? 出了这个函数它就找不到了啊 
查看完整描述

2 回答

?
快乐的时光

TA贡献79条经验 获得超48个赞

int a=3,b=5;

funa(&a,&b);

这里设置两个变量,a,b,分别为3和5;

执行funa函数,把内存里变量a和b的地址传给参数,

即*x = &a,*y = &b; 此时指针x,y分别指向内存a和b的空间。

所以在函数funa里面交换*x,*y的值便是在内存中交换a,b的值。

funa里面的参数作用域是直接在内存当中进行操作。主要是因为它的参数是指针形式。作用于就是在内存当中,不受函数作用域影响。

查看完整回答
2 反对 回复 2017-01-04
  • 荒小北158
    荒小北158
    函数里面的存储一个值的变量 叫作这个函数的本地变量是么?(暂时我是这样理解,也就是说装一个值的容器在这个函数里面 这个容器拿不出去 所以自定义一个函数做交换两个容器里面的东西是返回不了正确的东西去一开始那个main()函数 而指针是指向一个东西(地址 访问里面的值) 就好像杯子的标签 比如 *pa *pb 做交换 实际上交换的就是那个标签 ) 这样理解对么?交换值就好像是把两个杯子里的东西互换 而指针那样做 就是把一开始的名字为A的杯子叫它B 而一开始B杯子就叫A杯子
?
奕吉啊

TA贡献18条经验 获得超23个赞

这样写是不会交换两个变量的值的哦
查看完整回答
反对 回复 2017-01-04
  • 荒小北158
    荒小北158
    嗯~~~~~昨天看了一些东西 自定义一个交换两个数的函数是这样写的 这就是指针的神奇吧!
  • 2 回答
  • 0 关注
  • 1948 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信