真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語(yǔ)言取地址符函數(shù)傳遞 c語(yǔ)言取地址符號(hào)

c語(yǔ)言函數(shù)調(diào)用實(shí)參到形參傳遞的是值,那地址是怎么傳遞的?

首先,是實(shí)參調(diào)用形參.你說(shuō)的地址傳遞其實(shí)和值傳遞差不多.比如max( a, b );這是實(shí)參int max( int *p, int *p2 )這是形參.比如實(shí)參,a和b都是取a和b的地址,又因?yàn)閙ax()函數(shù)的形參是*p和*p2( *p和*p2被聲明為整型的指針 ),因?yàn)橹羔樖谴娴刂返?所以把a(bǔ)和b的地址賦給p和p2.下面是一個(gè)把a(bǔ)和b的值交換的程序./* ============================ 程序名:max.c 目的:用地址交換兩個(gè)變量的值. ============================ */#include int max( int *p, int *p2 ); /* 聲明函數(shù) */ int main( void ){int a, b;scanf( "%d", a ); /* 輸入兩個(gè)變量的值 */ scanf( "%d", b );printf( "a = %d, b = %d\n", a, b );return 0;}int max( int *p, int *p2 ){int temp; /* 定義一個(gè)臨時(shí)變量,為的只是交換 */temp = *p;*p = *p2;*p2 = temp; /* 己交換 */}

成都創(chuàng)新互聯(lián)主營(yíng)恒山網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,手機(jī)APP定制開發(fā),恒山h5小程序制作搭建,恒山網(wǎng)站營(yíng)銷推廣歡迎恒山等地區(qū)企業(yè)咨詢

C語(yǔ)言中如何以結(jié)構(gòu)體變量的地址作為函數(shù)形參,以便將指向結(jié)構(gòu)體變量的指針傳遞給它?

C語(yǔ)言中,所有的變量都存儲(chǔ)在內(nèi)存中,可以通過(guò)運(yùn)算符獲得變量的內(nèi)存地址,函數(shù)調(diào)用時(shí),只需要把普通變量前加上符號(hào),就可以達(dá)到傳遞變量地址的目的。

例如:

定義一個(gè)結(jié)構(gòu)體類型

struct?Yearmonthday

{?

int?year,?month,?day;

};

定義相關(guān)函數(shù),參數(shù)類型指定為結(jié)構(gòu)體類型指針

void?input(struct?Yearmonthday?*p1)?//函數(shù)形參p1是結(jié)構(gòu)體指針類型

{

printf("請(qǐng)輸入年,月,日:");

scanf("%d,%d,%d",p1-year,p1-month,p1-day);

}

在主函數(shù)中定義一個(gè)結(jié)構(gòu)體變量,調(diào)用相關(guān)函數(shù),傳遞變量地址

int?main()

{?

struct?Yearmonthday?ymd;

input(ymd);?//傳遞變量地址,以便帶回?cái)?shù)據(jù)

printf("date=%d/%d/%d\n",?ymd.year,?ymd.month,?ymd.day?);?//輸出結(jié)果

return?0;

}

c語(yǔ)言函數(shù)參數(shù)里的取地址符號(hào)是什么意思

就是找到這個(gè)變量的內(nèi)存地址,直接讀寫

例如:scanf("%d",a);

就是找到a的地址,把讀入一個(gè)數(shù)寫到a

的地址中

在例如

p=a;

就是讓指針p指向a的內(nèi)存地址,這樣直接對(duì)內(nèi)存讀寫.有利于提高操作速度.

c語(yǔ)言函數(shù)參數(shù)列表中參數(shù)加取址符調(diào)用傳地址反而會(huì)報(bào)錯(cuò)

c 語(yǔ)言函數(shù) 形參 列表 中 可以是普通變量 或指針變量,不允許 加取址符。

c++ 語(yǔ)言函數(shù) 形參 列表 中 加取址符 的參數(shù) 叫 “引用”,c 不支持。

------

函數(shù) 調(diào)用 的實(shí)參 類型 要與 形參對(duì)應(yīng),只有 形參 為 指針變量 的 實(shí)參 才可以是 地址。

void f(int x, int *y){};

int a,b;

int *p;

p=a;

調(diào)用

可以是 f(b,a);

可以是 f(b,p);

不可以是 f(b,a);

不可以是 f(b,a);

不可以是 f(b,a);

不可以是 f(b,p);

不可以是 f(b,p);

不可以是 f(b,p);

(但愿回答不被封。)

說(shuō)C語(yǔ)言中函數(shù)值傳遞與地址傳遞的方法

先舉個(gè)簡(jiǎn)單例子:

#include iostream

using namespace std;

void Add1(int *a)

{

(*a)++;

}

void Add2(int a)

{

a++;

}

int main()

{

int x=1,y=5;

Add1(x);

Add2(y);

coutx" "yendl;

return 0;

}

輸出:

2 5

這兩個(gè)自加函數(shù)中,Add1是指針傳遞,Add2是數(shù)值傳遞,

在調(diào)用Add2(y)時(shí),系統(tǒng)是先建造一個(gè)int型變量a,再將y的值傳給a(此時(shí)y和a是兩個(gè)不同地址的變量,只是兩者值相同),然后a++,卻對(duì)y沒(méi)有任何操作,故在函數(shù)調(diào)用結(jié)束后,釋放a,而y沒(méi)任何變化;

在調(diào)用Add1(x)時(shí),系統(tǒng)先建造int型指針a,然后將實(shí)參x的地址傳給了指針a,故此時(shí)a與x是指向同一地址,即共享統(tǒng)一數(shù)據(jù),當(dāng)對(duì)地址a內(nèi)的數(shù)據(jù)進(jìn)行操作,就是對(duì)x進(jìn)行操作。a++時(shí)自然也對(duì)x++,當(dāng)函數(shù)調(diào)用結(jié)束,指針a釋放掉,x的值此時(shí)已經(jīng)發(fā)生了變化。

這就是兩者不同,地址傳遞的參數(shù)都是指針類型,于數(shù)值傳遞不一樣。

至于選擇那種傳遞,就要看這個(gè)程序的具體目的和功能了,一般要對(duì)參數(shù)進(jìn)行修改的要用地址傳遞,而只是調(diào)用參數(shù)的數(shù)據(jù)進(jìn)行其他計(jì)算并不需要修改數(shù)據(jù)本身宜用數(shù)值傳遞。

還有什么不明白嗎

c語(yǔ)言取地址符有什么用,為什么scanf一定要用&

取地址 就是把變量轉(zhuǎn)為指針, 起到傳地址調(diào)用函數(shù)的效果.

而C語(yǔ)言中函數(shù)傳參有兩種,傳值調(diào)用 和傳指針調(diào)用.

傳值調(diào)用時(shí), 被調(diào)函數(shù)中改變參數(shù)值不會(huì)影響主函數(shù).

只有傳指針調(diào)用, 才可以將參數(shù)值回傳給主函數(shù).

scanf中要根據(jù)輸入對(duì)參數(shù)賦值, 所以 必須傳指針調(diào)用.


本文名稱:c語(yǔ)言取地址符函數(shù)傳遞 c語(yǔ)言取地址符號(hào)
分享網(wǎng)址:http://weahome.cn/article/hhgcgc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部