C語言 結構體

2021-09-17 02:05:13 字數 1544 閱讀 5794

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 定義結構體變數...