C 結構體型別作為函式引數

2021-07-11 14:34:26 字數 1678 閱讀 8708

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

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

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

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

下面通過乙個簡單的例子來說明,並對它們進行比較。

【例7.5】有乙個結構體變數stu,內含學生學號、姓名和3門課的成績。要求在main函式中為各成員賦值,在另一函式print中將它們的值輸出。

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

#include

#include

using

namespace std;

struct

student

//宣告結構體型別student

;int

main()

void

print

(student

st)

執行結果為:

12345 li fung 67.5 89 78.5 (2)

2)用指向結構體變數的指標作實參在上面程式的基礎上稍作修改即可。

#include

#include

using

namespace std;

struct

student

stu=

;//定義結構體student變數stu並賦初值

intmain()

//定義函式,形參p是基型別為student的指標變數

void

print

(student

*p)

呼叫print函式時,實參指標變數pt將stu的起始位址傳送給形參p(p也是基型別為student的指標變數)。這樣形參p也就指向stu,見圖7.10。

在print函式中輸出p所指向的結構體變數的各個成員值,它們也就是stu的成員值。在main函式中也可以不定義指標變數pt,而在呼叫print函式時以&stu作為實參,把stu的起始位址傳給實參p。

圖7.10

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

#include

#include

using

namespace std;

struct

student

stu=

;int

main()

//函式定義,形參為結構體student變數的引用

void

print

(student

&stud)

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

程式(2)採用指標變數作為實參和形參,空間和時間的開銷都很小,效率較高。但程式(2)不如程式(1)那樣直接。

程式(3)的實參是結構體student型別變數,而形參用student型別的引用,虛實結合時傳遞的是stu的位址,因而效率較高。它兼有(1)和(2)的優點。

引用變數主要用作函式引數,它可以提高效率,而且保持程式良好的可讀性。

在本例中用了string方法定義字串變數,在某些c++系統中目前不能執行這些程式,讀者可以修改程式,使之能在自己所用的系統中執行。

結構體作為函式引數

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

結構體作為函式引數

結構體巨集觀上可以當做變數看待,可以作為函式引數,也可以作為函式返回值。再軟體程式設計上的使用,可以與c 的類,封裝的功能平分天下。將乙個結構體變數中的資料傳遞給另乙個函式,有下列 3種方法 用結構體變數名作引數。一般較少用這種方法。用指向結構體變數的指標作實參,將結構體變數的位址傳給形參。用結構體...

結構體作為函式引數傳遞

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