結構作為函式引數
int numberofdays(struct date d);(1)整個結構可以作為引數的值傳入函式
(2)這時候是在函式內新建乙個結構變數,並複製呼叫者的結構的值
(3)也可以返回乙個結構
(4)這與陣列完全不同
輸入結構
#includestructpoint;
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)在這個輸入函式中,完全可以建立乙個臨時的結構變數,然後把這個結構返回給呼叫者
intmain()
;
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(3)返回傳入的指標是一種套路struct point *p
十三 結構型別(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 的一類。結構體可以被宣告為變數 指標或陣列等,用以實現較複雜的資料結構。結構體同時也是一些元素...