国产一区二区精品-国产一区二区精品久-国产一区二区精品久久-国产一区二区精品久久91-免费毛片播放-免费毛片基地

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > 結構體變量做函數參數,使用引用和不用引用有什么區別?

結構體變量做函數參數,使用引用和不用引用有什么區別?

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

一、結構體變量做函數參數,使用引用和不用引用的區別

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

結構作為函數參數的三種傳遞方式

1.傳遞結構成員

2.傳遞結構

3.傳遞結構的地址

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

//1.傳遞結構成員

#include

#include

//花唄還款簡單舉例

struct account

{

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

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

??? double limit;?????? //賬戶當前可用額度

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

};

//計算并返回當月應還款數

double payFor(double m1,double m2)

{

??? return m2-m1;

}

int main()

{

??? //初始化數據

??? struct account BOC;

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

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

??? BOC.max=10000;

??? BOC.limit=1562;

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

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

}

//2.傳遞結構

//結構體定義不變,后面照下面修改

//計算并返回當月應還款數

double payFor(struct account accounts)

{

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

}

int main()

{

??? //初始化數據

??? struct account BOC;

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

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

??? BOC.max=10000;

??? BOC.limit=1562;

??? double result=payFor(BOC);

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

}

//3.傳遞結構的地址??

//計算并返回當月應還款數

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

{

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

}

int main()

{

??? //初始化數據

??? struct account BOC;

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

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

??? BOC.max=10000;

??? BOC.limit=1562;

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

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

}

延伸閱讀:

二、結構體參數調用歸納

1)結構體變量作為函數參數[實參與形參]時,形參結構體變量成員值的改變不影響對應的實參構體變量成員值的改變。

2)結構體數組或結構體指針變量作為函數參數[實參與形參]時,形參結構體數組元素[或形參結構體指針變量指向的變量]成員值的改變將影響對應的實參構體數組[或實參結構體指針變量指向的變量]成員值的改變。

3)結構體變量可作為函數的參數,函數可返回一結構體類數據

4)p=&b; 使結構體指針變量p指向結構體變量b的空間。

p->num:表示通過指針變量引用結構體變量b的成員num

5)p=a;或p=&a[0];將結構體指針變量指向結構體數組a。則:

①p->num:表示通過指針變量引用結構體數組元素的成員num的值。

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

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

6)p=a;或p=&a[0];表示將結構體指針變量p指向結構體數組a。

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

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

聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT