第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

C語言中的形參與實參什么情況下是地址結(jié)合,什么情況下是數(shù)值結(jié)合?

C語言中的形參與實參什么情況下是地址結(jié)合,什么情況下是數(shù)值結(jié)合?

C C++
還0 2015-12-30 22:31:47
????在書本上看到形參與實參有兩種截然不同的結(jié)合方式,一個是地址結(jié)合,一個是數(shù)值結(jié)合。????但是卻沒有舉例在什么情況下可以地址結(jié)合,什么情況可以數(shù)值結(jié)合。求大神回答回答。
查看完整描述

2 回答

已采納
?
1100001

TA貢獻10條經(jīng)驗 獲得超14個贊

其實都是傳遞值,不過一種是傳遞地址的值,另一種是傳遞變量值,前一種被調(diào)用函數(shù)獲得地址之后,可以通過地址改變地址指向的變量的值,后一種在將值傳過去再return返回之后兩個函數(shù)就沒什么關(guān)系了。

比如第一種是這樣的:

#include?"stdio.h"
void?h(int?a,int?b);
int?main()
{
????int?a=3,b=4;
????h(a,b);
????printf("%d,%d",a,b);
}
void?h(int?a,int?b)
{
????a+=b;
????b=a-b;
????b=a-b;
}

在執(zhí)行之后,printf輸出的仍是3,4,也就是說函數(shù)h里面執(zhí)行的交換和主函數(shù)完全沒有關(guān)系,形參和實參是完全不同的地址,不同的兩個變量,只是形參臨時被賦了實參的值,這就是所謂的數(shù)值結(jié)合;

然后第二種是這樣的:

#include?"stdio.h"
void?h(int?*a,int?*b);
main()
{
????int?a=3,b=4;
????h(&a,&b);
????printf("%d,%d",a,b);
}
void?h(int?*a,int?*b)
{
????*a+=*b;
????*b=*a-*b;
????*b=*a-*b;
}

在執(zhí)行后printf函數(shù)輸出的是4,3;因為主函數(shù)傳給函數(shù)h的是a和b的地址,被調(diào)用函數(shù)通過地址,調(diào)換了主函數(shù)中a,b的值;這就是地址結(jié)合;

查看完整回答
2 反對 回復(fù) 2015-12-30
  • 還0
    還0
    為什么 b=a-b; 要寫兩次呢?我看不懂來這個置換的過程,能再說說嗎
  • 1100001
    1100001
    不好意思,寫錯了,最后一句應(yīng)該是a=a-b;
?
迷途的馬爾斯

TA貢獻72條經(jīng)驗 獲得超106個贊

給一道題你做一下你就懂了:

#include?<stdio.h>
int?fun(int?a[],int?n,int?x);
void?main()
{
????int?a[]?=?{6,9,0,7,4,2};
????printf("%d",fun(a,5,5));
}
int?fun(int?a[],int?n,int?x)
{
????int?i;
????for(i=0;i<n;i++)
????{
????????if(a[i]==x)
????????{
????????????return?i;
????????}
????}
????return?-1;
}


查看完整回答
反對 回復(fù) 2015-12-30
  • 2 回答
  • 0 關(guān)注
  • 1856 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號