結構體作為函式引數

2021-08-03 13:50:06 字數 1460 閱讀 6288

結構體巨集觀上可以當做變數看待,可以作為函式引數,也可以作為函式返回值。再軟體程式設計上的使用,可以與c++的類,封裝的功能平分天下。

將乙個結構體變數中的資料傳遞給另乙個函式,有下列

3種方法:

用結構體變數名作引數。一般較少用這種方法。

用指向結構體變數的指標作實參,將結構體變數的位址傳給形參。

用結構體變數的引用變數作函式引數。

案例說明:

有乙個結構體變數

stu,內含學生學號、姓名和

3門課的成績。要求在

main

函式中為各成員賦值,在另一函式

print

中將它們的值輸出。

1) 用結構體變數作函式引數。

student stu; //

定義結構體變數

print(stu); //

呼叫print

函式,輸出

stu各成員的值

//void print(student st) 

結論:用結構體變數作實參和形參,程式直觀易懂,效率是不高的。

2)用指向結構體變數的指標作實參 

student stu; //

定義結構體變數

student *pt=&stu; //

定義基型別為

student

的指標變數

pt,並指向

stu

print(pt); //

實參為指向

student

類資料的指標變數

// void print(student *p)

結論:採用指標變數作為實參和形參,空間和時間的開銷都很小,效率較高。沒有(

1)的直觀。

3) 用結構體變數的引用作函式引數

student stu; //

定義結構體變數

print(stu);

//void print(student &stud)

結論:實參是結構體

student

型別變數,而形參用

student

型別的引用,虛實結合時傳遞的是

stu的位址,因而效率較高。它兼有

(1)和

(2)的優點。

其實與變數是一樣的,值傳遞、指標、引用。

如下,指標操作獲取資訊:

studentinfo stuone;

memset(stuone,0,sizeof(studentinfo));  

iretvalue = getstudentinfo(&stuone);  // 

呼叫函式

if (iretvalue ==ok)  printf(

「pass\r\n」);

//呼叫函式

int32 getstudentinfo(studentinfo *pstudentinfo)

tham_   這篇看起來太累,但詳細。

結構體作為函式引數

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

結構體作為函式引數傳遞

結構變數是乙個標量,它可以用於其他標量可以使用的任何場合,但把結構體作為引數傳遞給乙個函式要注重效率 例如下面這樣乙個結構體 define product size 20 typedef structtransaction 如果我們需要列印裡面的資料,函式原型為 void print receipt...

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

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