1.1取位址
struct point3d
;struct point3d p =
;printf
("&p = %p\n"
,&p)
;printf
("&(p.x) = %p\n"
,&p.x)
;printf
("&(p.y) = %p\n"
,&p.y)
;printf
("&(p.z) = %p\n"
,&p.z)
;
結構體名不是結構體變數的位址,必須使用&獲取位址。
陣列名即位址。
1.2傳參
void
print
(struct point3d p)
整個結構體作為引數的值傳入函式。這時候在函式內新建乙個結構體變數並複製值。結構體可以作為返回值,也是結構體整體複製。
1.3結構體指標
struct point3d p =
;struct point3d* q =
&p;
結構體指標-
>成員名
例如:
struct point3d p =
;struct point3d* q =
&p;printf
("(%d,%d,%d)"
,q->x,q-
>y,q-
>z)
;
通過修改結構體指標q指向的成員,也會改變結構體變數p成員的值。
void
print
(struct point3d* p)
1.4結構陣列struct point3d ps=
,,};
for(
int i=
0;i<3;
++i)
1.5結構體巢狀struct line
;struct line line =,}
;// 使用
printf
("(%d,%d,%d)~(%d,%d,%d)"
,line.start.x,line.start.y,line.start.z,
line.end.x,line.end.y,line.end.z)
;struct line* p =
&line;
printf
("(%d,%d,%d)~(%d,%d,%d)",p-
>start.x,p-
>start.y,p-
>start.z,
p->end.x,p-
>end.y,p-
>end.z)
;
結構體含有結構體陣列
struct ********
;struct ******** t =,,
}};
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 定義結構體變數...