常用第三種
1.
struct data today;2.
struct
today;
3.struct data today;
struct date today;
//today就是定義的結構變數
形式1.
struct date today =
;形式2.
struct date thismonth =
通過.運算子和名字訪問結構成員
today.month
today.day
today.year
直接用結構變數的名字訪問整個結構
對於結構體整體,可以賦值、取位址,也可傳遞值給函式引數
struct pointp1, p2;
p1 =
(struct point)
; 即p1.x =
10;p1.y =
5p2 = p1; 即 p2.x = p1.x;p2.y = p1.y; 陣列則無法如此賦值
與陣列不同,必須使用&運算子
struct date myday;
struct date *p =
&myday; 指標指向結構變數myday,並且指標是結構型別的
(*p)
.month =12;
p->month =
12; 用->表示指標所指的結構體變數中的成員
1.好處是傳入傳出的只是乙個指標大小
2.若要保護傳入結構不被函式修改,用*const struct point y
;3.返回傳入的指標是一種套路
#include
struct point y;
struct point *
inputpoint
(struct point *);
//該函式通過結構指標將實參傳入函式,修改後,再返回乙個指標(小套路)
void
print
(const
struct point *p)
;//列印結構體,不改變值,故用const。
void
outpoint
(struct point p )
;//也是輸出結構體,但與上個函式引數型別不同
intmain
(int argc,
char
const
*ar**)
;// inputpoint(&y); 該句若不刪除,和下一句會各呼叫一次inputpoint函式,即要輸入兩次
struct point *z =
inputpoint
(&y)
;// *z = ;該句只想說明可以這麼用來初始化,表示結構指標z指向的那個值
print
(z);
//print(inputpoint(&y));這樣寫會再次呼叫inputpoint函式
// struct point *q = &y;
// printf("%d %d",q->a, q->b);//原因同上
outpoint
(*z)
;//z是結構指標,*z是指標指向的那個結構型別的值
return0;
}struct point *
inputpoint
(struct point * p)
void
print
(const
struct point *p)
void
outpoint
(struct point p )
struct date
;struct date dates[
100]
;struct date dates=
,};
struct point
;struct rectangle
;struct rectangle r;
r.pt1.x; r.pt1.y;
r.pt2.x; r,pt2,y;
若有struct rectangle r,
*rp;
rp =
&r;
則r.pt1.x 與 rp->pt1.x 等價。
C語言結構體
1.1.1 結構概念 1 結構存在的意義 存在是合理的,許多事物的存在是在不斷解決問題引入的,當然有更好的方法出現時改變也是合理的。在實際問題中,一組資料往往具有不同的資料型別。例如,在學生登記表中,姓名應為字元型,學號可為整型或字元型,年齡應為整型,性別應為字元型,成績可為整型或實型。顯然不能用乙...
C語言 結構體
宣告乙個結構體型別 struct 結構體名 成員表列 定義結構體變數的方法 1 先宣告結構體型別再定義變數名。在定義了結構體變數後,系統會為之分配記憶體單元.例如 struct student student1,student2 2 在宣告型別的同時定義變數,例如 struct 結構體名 成員表列 ...
c語言 結構體
1 定義結構體 c語言允許使用者自己建立不同型別資料組成的組合型的資料結構 struct 結構體名 1 結構體的型別不是只有一種,可以根據需要設計許多種,如struct student struct worker等 2 結構體的成員可以是另一結構體的成員,注意的是引用此成員的方式 2 定義結構體變數...