亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

自定義函數交換兩個變量的值怎么理解?求指教!

自定義函數交換兩個變量的值怎么理解?求指教!

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 關注
  • 2129 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號