C語言》結構體的引數傳遞和指標傳遞(注釋詳解)

2021-08-06 05:10:40 字數 1333 閱讀 2341

本文包括兩個版本,都講到了引數傳遞和指標傳遞,作者水平有限,如有不足之處,敬請指正!

一、

//《結構體的引數傳遞和指標傳遞》

//版本一:皆採用函式返回值為整個結構體的方式

#include struct gas

;struct gas func1(struct gas str); //申明函式func1()

struct gas func2(struct gas *ptr); //申明函式func2()

int main(int argc, char *argv);

//func1()函式傳參,傳遞整個結構體

str = func1(str);

printf("mpg1 = %f\n", str.mpg); //列印mpg的值

//func2函式傳參,傳遞乙個位址進去,這裡傳遞整個結構體的位址

str = func2(&str);

printf("mpg2 = %f\n", str.mpg); //列印mpg的值

return 0;

}//定義函式func1(),形參為整個結構體,返回值也為整個結構體

struct gas func1(struct gas str)

//定義函式func2(),形參為乙個指標,應傳遞乙個位址

struct gas func2(struct gas *ptr)

二、

//《結構體的引數傳遞和指標傳遞》

//版本二:使用指標傳遞時,不採用返回值方式

#include struct gas

;struct gas func1(struct gas str);

void func2(struct gas *ptr);

int main(int argc, char *argv);

//func1函式傳參

str = func1(str);

printf("mpg1 = %f\n", str.mpg);

//函式func2傳參

func2(&str);

return 0;

}//定義函式func1(),形參為整個結構體,返回值也為整個結構體

struct gas func1(struct gas str)

//定義函式func2(),形參為乙個指標,應傳遞乙個位址,由於該函式是void型別,所以沒有返回值

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

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

C語言關於結構體做引數傳遞

首先結構體做函式引數有三種傳遞方式 一是傳遞結構體變數,這是值傳遞,二是傳遞結構體指標,這是位址傳遞,三是傳遞結構體成員,當然這也分為值傳遞和位址傳遞。以傳引用呼叫方式傳遞結構比用傳值方式傳遞結構效率高。以傳值方式傳遞結構需要對整個結構做乙份拷貝。下面看乙個列子,student結構體中包含該學生的各...

C語言關於結構體做引數傳遞

首先結構體做函式引數有三種傳遞方式 一是傳遞結構體變數,這是值傳遞,二是傳遞結構體指標,這是位址傳遞,三是傳遞結構體成員,當然這也分為值傳遞和位址傳遞。以傳引用呼叫方式傳遞結構比用傳值方式傳遞結構效率高。以傳值方式傳遞結構需要對整個結構做乙份拷貝。下面看乙個列子,student結構體中包含該學生的各...