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

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

關于形參和實參,改變實參問題

關于形參和實參,改變實參問題

慕勒3428872 2019-05-22 16:47:09
形參的改變無法影響到實參,是我開始以為的。后來發現用指針變量可以改變實參。#include#includevoidfun(int*a,int*b){int*c;c=a;a=b;b=c;}voidfun1(int*a,int*b){int*c;*c=*a;*a=*b;*b=*c;}intmain(){intx=3,y=5,*p=&x,*q=&y,*k=&x,*z=&y;fun(p,q);printf("%d,%d\n",*p,*q);fun1(k,z);printf("%d,%d\n",*k,*z);//fun(&x,&y);printf("%d,%d\n",*p,*q);return0;}這段代碼輸出3,53,3;首先我認為,在main()中,p,q獲得了整形x,y的地址。進入fun()函數后,a,b,c交換的a,b的地址應該p,q的地址也要變化,因此我錯誤的認為輸出5,3至于進入fun1()函數后,是指針變量的值互換應該不會改變我錯誤的認為應該輸出3,5.請您幫我指導下,詳細點。否則我可能不懂。謝謝您
查看完整描述

2 回答

?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

intmain()
{
intx=3,y=5,*p=&x,*q=&y,*k=&x,*z=&y;
fun(p,q);
||
||________copyqtob____
||
|____copyptoa___|
||
voidfun(int*a,int*b)
{
int*c;
c=a;
a=b;
b=c;//actuallyaandbhasnorelationtopandq
}
fun1(k,z);
||
||________copyztob____
||
|____copyktoa___|
||
voidfun1(int*a,int*b)
{
int*c;
*c=*a;
*a=*b;
*b=*c;//aandbsameasfun
//but*aisreferencex,*bisreferencey
//swap*aand*balsoaffectedxandy
}
                            
查看完整回答
反對 回復 2019-05-22
  • 2 回答
  • 0 關注
  • 673 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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