c語言傳址函數(shù) C語言傳址

C語言,傳址函數(shù)問題。指針與地址。

*b是指針b指向的變量而不是地址,比如int *b=a,在這里并不是把a(bǔ)的地址賦給了*b而是賦給了b,這里是對(duì)指針變量b進(jìn)行了初始化,在這里*是為了表明變量b是指針變量,以和整形變量區(qū)別,所以及很容易理解把a(bǔ)的地址a賦給b了。

在原州等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì) 網(wǎng)站設(shè)計(jì)制作定制設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,營(yíng)銷型網(wǎng)站,成都外貿(mào)網(wǎng)站制作,原州網(wǎng)站建設(shè)費(fèi)用合理。

數(shù)組名作為實(shí)參的時(shí)候,如果是一維數(shù)組,那么它傳遞的就是一維數(shù)組的第一個(gè)元素的地址,即數(shù)組首元素的地址;而若是二維數(shù)組,那么它傳遞的就是二維數(shù)組中第一個(gè)包含有若干列(有二維數(shù)組的第二個(gè)[ ]中的數(shù)字決定)即第一行的一維數(shù)組的地址;多維數(shù)組同理。。。

c語言傳值和傳地址

輸出:

調(diào)用函數(shù)前輸出結(jié)果:

nums[1]=0

nums[2]=0

nums[3]=0

nums[4]=0

value = 0

因?yàn)檠h(huán)變量初值是1,所以nums[0]不會(huì)輸出

findMax(nums,value); //調(diào)用findMax,vals指向nums開始元素,m=0

i=1;[i=1],iMAXELS成立,開始循環(huán),vals[i]=1,nums[0,1,0,0,0],輸出:vals[1]=1

i++;[i=2],iMAXELS成立,繼續(xù)循環(huán),vals[i]=1,nums[0,1,1,0,0],輸出:vals[2]=1

i++;[i=3],i5成立,繼續(xù)循環(huán),vals[i]=1,nums[0,1,1,1,0],輸出:vals[3]=1

i++;[i=4],i5成立,繼續(xù)循環(huán),vals[i]=1,nums[0,1,1,1,1],輸出:vals[4]=1

i++;[i=5],i5不成立,結(jié)束循環(huán),輸出:m=1

函數(shù)返回,m被舍棄,輸出:

調(diào)用函數(shù)后輸出結(jié)果:

nums[1]=1

nums[2]=1

nums[3]=1

nums[4]=1

value = 0

由于子程序中沒有計(jì)算過m,所以m值一直是初始的1,這個(gè)m是函數(shù)自己臨時(shí)定義的變量,用來接收調(diào)用者傳進(jìn)來的參數(shù),main函數(shù)將vale的值0傳遞給m,計(jì)算完后,函數(shù)返回,m被舍棄,不會(huì)影響value的值(作為參數(shù),是取value的值來用一下,然后就沒有value的事了)

如果想將m的值返回,那么有兩種辦法:

函數(shù)寫成:void findMax(int vals[],int *m),然后函數(shù)中用到m的地方都改成*m,調(diào)用時(shí)findMax(nums,value);

函數(shù)寫成:int findMax(int vals[],int m),函數(shù)最后寫return m;調(diào)用時(shí)value=findMax(nums,value);

如果子程序不需要value作為m的初始值,則可省略第2個(gè)參數(shù):int findMax(int vals[]),調(diào)用:value=findMax(nums);

C語言傳地址調(diào)用

1、值傳遞:不管怎么傳,原來的實(shí)參的值都不會(huì)改變。

地址傳遞,原來的實(shí)參的值可能被改變。

打個(gè)比方:

值傳遞就好象你告訴別人你的帳戶里有多少錢 帳戶里的錢不會(huì)改變。

地址傳遞就好象你告訴別人你的帳戶密碼 帳戶里面的錢可以被改變。

2、例如:

#includestdio.h

point(char *pt)

main()

{char b[4]={'m','n','o','p'},*pt=b;

point(pt);

printf("%c\n",*pt);

}

point(char *p)

{p+=3;

*p='F';}//加上這一句就變了

說C語言中函數(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沒有任何操作,故在函數(shù)調(diào)用結(jié)束后,釋放a,而y沒任何變化;

在調(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語言編程 傳址?指針函數(shù)?

1

新建一個(gè)空控制臺(tái)項(xiàng)目

2

在項(xiàng)目中新建頭文件intmul.h,并添加以下內(nèi)容:

void intmul(int a,int b)

{

printf("%d*%d=%d\n",a,b,a*b);

}

3

在項(xiàng)目中新建頭文件intdiv.h,并添加以下內(nèi)容:

void intdiv(int a,int b)

{

if(b==0)

{

printf("除數(shù)不能為0\n");

return;

}

printf("%d/%d=%d\n",a,b,a/b);

}

4

在項(xiàng)目中新建源文件main.c,并添加以下內(nèi)容:

#include stdio.h

#include intmul.h

#include intdiv.h

int main()

{

int a,b;

printf("請(qǐng)輸入兩個(gè)整數(shù):");

scanf("%d %d",a,b);

intmul(a,b);

intdiv(a,b);

return 0;

}

c語言地址傳遞函數(shù)

int add(struct stu g)

標(biāo)準(zhǔn)c是不支持這種傳引用的語法的。。想做到類似效果只能函數(shù)里用 *g,調(diào)用時(shí)候用 value 之類的

k=stu.i+stu.j; 這里stu應(yīng)該是g

本文標(biāo)題:c語言傳址函數(shù) C語言傳址
分享路徑:http://muchs.cn/article10/docojdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作標(biāo)簽優(yōu)化、動(dòng)態(tài)網(wǎng)站、響應(yīng)式網(wǎng)站定制網(wǎng)站、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化