c語言之 結構體(一)

2021-09-26 10:23:41 字數 1250 閱讀 2010

結構體(struct)是由一系列具有相同或不同型別的資料構成的資料集合,是一種特殊的資料型別。區別與陣列的是,陣列內部是相同型別的資料。

#include//定義一種資料型別

struct student

; //分號不能省

int main(void)

;// 定義結構體變數的同時初始化

st.sid = 99; //第一種方式

= "lisi"; //error

strcpy(st.name, "lisi");//只能使用strcpy函式為字元陣列整體賦值

struct student * pst;

pst = &st;

pst->sid = 99; //第二種方式 pst->sid 等價於 (*pst).sid 而(*pst).sid等價於 st.sid, 所以pst->sid 等價於 st.sid

return 0;

}

訪問結構體成員內部變數有兩種方式:

也可以使用typedef關鍵字重新命名結構體:

typedef struct teacher

teacher_t

teacher_t teacher;

相同結構體的不同變數只保留了賦值運算子

st1 = st2

(1)結構體變數作為函式形參的時候,實際上和普通變數(類似於int之類的)傳參時表現是一模一樣的。所以說結構體變數其實也是普通變數而已。

(2)因為結構體一般都很大,所以如果直接用結構體變數進行傳參,那麼函式呼叫效率就會很低。(因為在函式傳參的時候需要將實參賦值給形參,所以當傳參的變數越大呼叫效率就會越低)。怎麼解決?思路只有乙個那就是不要傳變數了,改傳變數的指標(位址)進去。

# include # include struct student

; //分號不能省

void f(struct student * pst);

void g(struct student st);

void g2(struct student *pst);

int main(void)

//這種方式耗記憶體 耗時間 不推薦

void g(struct student st)

void g2(struct student *pst)

void f(struct student * pst)

C語言之結構體

一 什麼是結構體 結構體是不同型別的資料組合成乙個有機整體。例如 學生的學號 姓名 性別 成績 位址 這些都是乙個學生的屬性,把這些屬性組織成乙個組合,組合中包含不同的資料型別,c和c 允許指定這樣的資料型別,稱為結構體。struct student 申明乙個結構體型別 struct是結構體申明的關...

C語言之結構體

在c語言中,可以使用結構體 struct 來存放一組不同型別的資料。結構體的定義形式為 struct 結構體名 結構體是一種集合,它裡面包含了多個變數或陣列,它們的型別可以相同,也可以不同,每個這樣的變數或陣列都稱為結構體的成員 member 請看下面的乙個例子 struct stu stu 為結構...

C語言之結構體

在c語言中,有一種型別聽著很任性,叫做自定義型別。顧名思義,這種型別是程式設計師自己定義的一種型別,它和陣列很相似,但也有一些區別。自定義型別包含以下幾種 結構體 列舉 聯合 結構體就是將具有不同或相同的型別放在一起的聚合型別。可能聽著有些像順口溜,上一段 捋一捋。struct peo a 在 中我...