十三 結構型別(3) 結構與函式

2022-06-30 01:30:10 字數 1908 閱讀 8015

結構作為函式引數

int numberofdays(struct  date d);
(1)整個結構可以作為引數的值傳入函式

(2)這時候是在函式內新建乙個結構變數,並複製呼叫者的結構的值

(3)也可以返回乙個結構

(4)這與陣列完全不同

輸入結構

#includestruct

point;

void getstruct(struct point);//

讀入乙個結構體

void output(struct point);//

輸出乙個結構體

intmain()

;

getstruct(y);

output(y);

return0;

}

void getstruct(struct point p)//

讀入乙個結構體

void output(struct point p)//

輸出乙個結構體

(1)沒有直接的方式可以一次scanf乙個結構

(2)如果我們打算寫乙個函式來讀入結構(——>)

(3)但是讀入的結構如何送回來呢?

(4)記住c在函式呼叫時是傳值的

——所以函式中的p與main中的y是不同的。

——在函式讀入了p的數值之後,沒有任何東西回到main,所以y還是。

解決的方案

(1)之前的方案,把乙個結構傳入了函式,然後再函式中操作,但是沒有返回回去

——問題在於傳入函式的是外面那個結構的轉殖體,而不是指標

傳入結構和傳入陣列是不同的

(2)在這個輸入函式中,完全可以建立乙個臨時的結構變數,然後把這個結構返回給呼叫者

int

main()

;

y=inputpoint();

output(y);

return0;

}

struct point inputpoint()//

讀入乙個結構體

也可以把y的位址傳給函式,函式的引數型別是指向乙個結構的指標。不過那樣的話,訪問結構的成員的方式需要作出調整。(看結構指標引數部分)

指向結構的指標

用   ->  表示指標所指的結構變數中的成員。

#includestruct

datemyday;

intmain()

結構指標引數

struct point* inputpoint(struct point *p);//

讀入乙個結構體

intmain()

;

inputpoint(&y); //

把y的位址傳給函式,函式的引數型別是指向乙個結構的指標

output(y);

return0;

}

struct point* inputpoint(struct point *p)//

讀入乙個結構體

(1)好處是傳入傳出只是乙個指標的大小

(2)如果需要保護傳入的結構不被函式修改

const

struct point *p

(3)返回傳入的指標是一種套路

十三 結構型別(4) 結構中的結構

結構陣列 struct date dates 100 struct date dates 結構中的結構 struct dateandtime 巢狀的結構 struct point struct rectangle 如果有變數 struct rectangle r 就可以有 r.pt1.x,r.pt1...

C 結構型別與建立結構變數

結構型別 結構型別適用於早應用程式中對數學 幾何以及 原子 實體模型。結構是使用者自定義的型別,然而,結構不只是一組名稱值對。結構可以包含許多資料字段和操作這些欄位的成員型別。定義和使用結構的過程很簡單,但是其中的一些細節很重要。在對資料結構進行分析的同時。我們要先建立乙個名為funwithstru...

和結構體 結構體型別與結構體變數

結構體 struct 是由一系列具有相同型別或不同型別的資料構成的資料集合,叫做結構體。在c語言中,結構體 struct 指的是一種資料結構,是c語言中聚合資料型別 aggregate data type 的一類。結構體可以被宣告為變數 指標或陣列等,用以實現較複雜的資料結構。結構體同時也是一些元素...