結構體(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 在 中我...