久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

手機站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時隨地免費學(xué)

千鋒教育

掃一掃進入千鋒手機站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時隨地免費學(xué)習(xí)課程

當(dāng)前位置:首頁  >  技術(shù)干貨  > 結(jié)構(gòu)體變量做函數(shù)參數(shù),使用引用和不用引用有什么區(qū)別?

結(jié)構(gòu)體變量做函數(shù)參數(shù),使用引用和不用引用有什么區(qū)別?

來源:千鋒教育
發(fā)布人:xqq
時間: 2023-10-11 07:36:27 1696980987

一、結(jié)構(gòu)體變量做函數(shù)參數(shù),使用引用和不用引用的區(qū)別

引用實際上是變量別名。效果等同于操作原對象。不傳引用新建了一個Stack副本,副本指針的改變不影響原變量,里面的指針永遠指向最初的地址,導(dǎo)致每次只是把這塊內(nèi)存的值從a改到b而沒有實現(xiàn)自增。

結(jié)構(gòu)作為函數(shù)參數(shù)的三種傳遞方式

1.傳遞結(jié)構(gòu)成員

2.傳遞結(jié)構(gòu)

3.傳遞結(jié)構(gòu)的地址

===================================

//1.傳遞結(jié)構(gòu)成員

#include

#include

//花唄還款簡單舉例

struct account

{

??? char * bankName;??? //銀行名稱

??? char * userName;??? //用戶名稱

??? double limit;?????? //賬戶當(dāng)前可用額度

??? double max;???????? //賬戶總額度

};

//計算并返回當(dāng)月應(yīng)還款數(shù)

double payFor(double m1,double m2)

{

??? return m2-m1;

}

int main()

{

??? //初始化數(shù)據(jù)

??? struct account BOC;

??? BOC.bankName=”中國銀行”;

??? BOC.userName=”馬小云”;

??? BOC.max=10000;

??? BOC.limit=1562;

??? double result=payFor(BOC.limit,BOC.max);

??? printf(“用戶應(yīng)還款%.2lf元,截至下月9日之前不算利息!\n”,result);

}

//2.傳遞結(jié)構(gòu)

//結(jié)構(gòu)體定義不變,后面照下面修改

//計算并返回當(dāng)月應(yīng)還款數(shù)

double payFor(struct account accounts)

{

??? return accounts.max-accounts.limit;

}

int main()

{

??? //初始化數(shù)據(jù)

??? struct account BOC;

??? BOC.bankName=”中國銀行”;

??? BOC.userName=”馬小云”;

??? BOC.max=10000;

??? BOC.limit=1562;

??? double result=payFor(BOC);

??? printf(“用戶應(yīng)還款%.2lf元,截至下月9日之前不算利息!\n”,result);

}

//3.傳遞結(jié)構(gòu)的地址??

//計算并返回當(dāng)月應(yīng)還款數(shù)

double payFor(const struct account *accounts)??? //因為指針指向可以改變,所以此處加上const起保護作用。

{

??? return accounts->max-accounts->limit;

}

int main()

{

??? //初始化數(shù)據(jù)

??? struct account BOC;

??? BOC.bankName=”中國銀行”;

??? BOC.userName=”馬小云”;

??? BOC.max=10000;

??? BOC.limit=1562;

??? double result=payFor(&BOC);

??? printf(“用戶應(yīng)還款%.2lf元,截至下月9日之前不算利息!\n”,result);

}

延伸閱讀:

二、結(jié)構(gòu)體參數(shù)調(diào)用歸納

1)結(jié)構(gòu)體變量作為函數(shù)參數(shù)[實參與形參]時,形參結(jié)構(gòu)體變量成員值的改變不影響對應(yīng)的實參構(gòu)體變量成員值的改變。

2)結(jié)構(gòu)體數(shù)組或結(jié)構(gòu)體指針變量作為函數(shù)參數(shù)[實參與形參]時,形參結(jié)構(gòu)體數(shù)組元素[或形參結(jié)構(gòu)體指針變量指向的變量]成員值的改變將影響對應(yīng)的實參構(gòu)體數(shù)組[或?qū)崊⒔Y(jié)構(gòu)體指針變量指向的變量]成員值的改變。

3)結(jié)構(gòu)體變量可作為函數(shù)的參數(shù),函數(shù)可返回一結(jié)構(gòu)體類數(shù)據(jù)

4)p=&b; 使結(jié)構(gòu)體指針變量p指向結(jié)構(gòu)體變量b的空間。

p->num:表示通過指針變量引用結(jié)構(gòu)體變量b的成員num

5)p=a;或p=&a[0];將結(jié)構(gòu)體指針變量指向結(jié)構(gòu)體數(shù)組a。則:

①p->num:表示通過指針變量引用結(jié)構(gòu)體數(shù)組元素的成員num的值。

②p->num++:表示通過指針變量先引用結(jié)構(gòu)體數(shù)組元素的成員num的值,再使該元素的成員num的值加 1,先引用其值然后其加1。

③++p->num:表示使指向的元素的成員num的值加1,再引用其值。

6)p=a;或p=&a[0];表示將結(jié)構(gòu)體指針變量p指向結(jié)構(gòu)體數(shù)組a。

①(p++)->num:表示通過指針變量先引用結(jié)構(gòu)體數(shù)組元素? 的成員num的值,再使指針變量本身加1,指針變量加1表示使指針變量指向結(jié)構(gòu)體數(shù)組的下一個元素。

②(++p)->num:先使指針變量本身加1,先使使指針變量指向結(jié)構(gòu)體數(shù)組的下一個元素,然后引用指針變量所指向的結(jié)構(gòu)體數(shù)組元素的成員num的值。

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
免費領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
數(shù)據(jù)結(jié)構(gòu)里的間界疊加是什么意思?

一、數(shù)據(jù)結(jié)構(gòu)里的間界疊加數(shù)據(jù)結(jié)構(gòu)里的間界疊加是間界疊加:從一端到另一端沿各部分分界來回折疊后,最后一位對齊相加。如:key=2534635870三位...詳情>>

2023-10-11 09:22:37
軟件架構(gòu)如何能夠滿足ASPICE流程?

一、軟件架構(gòu)如何能夠滿足ASPICE流程架構(gòu)的用途是把整個產(chǎn)品劃分為更為細節(jié)的板塊:軟件、硬件、通信等。在這個基礎(chǔ)上軟件整體將按照用途、功能...詳情>>

2023-10-11 08:47:00
紅黑樹為什么叫紅黑樹?

一、紅黑樹叫紅黑樹的原因紅黑樹(Red-Black Tree)是一種自平衡的二叉搜索樹(Binary Search Tree),其在插入和刪除操作時能夠自動調(diào)整樹的結(jié)...詳情>>

2023-10-11 08:42:41
為什么數(shù)組索引數(shù)據(jù)那么快速、有效?

一、數(shù)組索引數(shù)據(jù)快速、有效的原因1、連續(xù)內(nèi)存存儲數(shù)組在內(nèi)存中是連續(xù)存儲的,數(shù)組的元素在內(nèi)存中按照一定的順序排列,相鄰元素之間沒有間隔。...詳情>>

2023-10-11 08:36:19
數(shù)據(jù)結(jié)構(gòu)里的逐點插入法、排序二叉樹是什么?

一、數(shù)據(jù)結(jié)構(gòu)里的逐點插入法、排序二叉樹逐點插入法三角剖分是一種研究方法。三角剖分≠TIN三角剖分是代數(shù)拓撲學(xué)里最基本的研究方法。 以曲面為...詳情>>

2023-10-11 08:08:01
快速通道