結構體,結構體指標作為函式引數的應用筆記

2022-06-28 02:18:08 字數 875 閱讀 9376

1. 結構體,結構體指標作為函式引數有何區別

#include #include 

struct

animal;//

使用結構體作為引數 浪費記憶體 需要建立結構體

void change_struct(struct

animal cat)

//函式內部改變需要位址 所以需要指標儲存

void change_point(struct animal *cat)

void

main

;

struct animal *pcat = &cat;

cat.num = 20

; change_struct(cat);

printf("%d

",cat.num); //輸出20

change_point(pcat);

printf("%d

",cat.num); //輸出13

cat.num = 28

; change_point(&cat); //輸出13

printf("%d

",cat.num);

}

2. 綜上所述,就是傳遞結構體指標(或者取它的位址)的話,可以修改結構體裡面的值。傳遞結構體的話,不能修改結構體變數的值。

3. 其中如果傳遞的是結構體的話,因為c語言的引數傳遞值呼叫方式是要求把引數的乙份拷貝傳遞給引數,上面的name這個陣列的長度是30,那麼這個結構體將占用34個位元組的空間,要想把它作為引數傳遞的,我們必須把34個位元組都複製到堆疊中,以後再丟棄。所以傳遞指標的效率要高非常多。

4. 我以前以為,可以把結構體名字(實際上必須取它的位址)直接賦值給結構體指標,可能是字串搞多了吧。

結構體 結構指標作為函式引數

結構體 結構體指標作為函式的引數現在應用的非常廣泛,但一些細微之處還需要引起注意。本文將討論其作為形參和實參的區別。將結構體作為函式的引數,目的是通過 makeinfo 函式呼叫去改變 person 結構體中 letters 的值。情形1 include include struct namect ...

結構體和結構體指標作為引數傳遞

結構體作為引數傳遞 include includeusing namespace std 宣告結構體 struct namect 函式宣告必須提供資料型別,但是可以不傳引數 struct namect getinfo void 宣告函式的返回值是乙個結構體,引數型別也是結構體,這裡結構體作為引數值直...

結構體作為函式引數

c語言中結構體在函式中的應用 前兩天在編寫一段 時突然對結構體在函式中的用法有些模糊了,經過複習,基本弄清了這些知識,特總結如下 一 結構體與函式引數 結構体作函式引數可分為 傳值與傳指標。1 傳值時結構體引數會被拷貝乙份,在函式體內修改結構體引數成員的值實際上是修改呼叫引數的乙個臨時拷貝的成員的值...