C語言知識點 結構體

2021-10-09 01:58:12 字數 2596 閱讀 7982

郝斌老師講解問題的四**寶:

為什麼需要a

什麼是a

怎麼用a

使用a需要注意哪些問題

為了表示一些複雜的事物,而普通的基本型別無法滿足實際要求

舉個例子:

乙個學生有:

int age;

float scrore;

char ***;

三個屬性,

定義乙個學生可以使用:

int student1age =10;

float student1score =

30.0

;char student1*** =

'f';

int student2age =

100;

float student2score =

40.0

;char student2*** =

'f';

int student3age =90;

float student3score =

100.0

;char student3*** =

'f';..

....

假如乙個學校有5萬人,需要這樣定義5萬次,分別賦值,這,也太複雜了

因此,我們就可以使用結構體

把一些基本資料型別組合在一起,形成乙個新的復合資料型別,這就是結構體。

定義乙個學生的結構體

struct student 

;

上面的**,只是定義了乙個型別,而沒有定義變數。

enum裡面變數後面是逗號,不要與結構體搞混

//typedef enum : nsuinteger  ;
定義結構體的三種方式:

//第一種方式

struct student

;//第二種方式

struct student2 student2;

//第三種方式

struct

student3;

其中,

第一種,定義了乙個結構體型別,最常用,推薦使用

第二種將變數型別與變數名結合起來,只能使用變數名student2,如果你想再使用該結構體定義乙個新的變數,是不行的。不推薦使用

第三種方式,知道有這麼個東西就行,特別不推薦使用

賦值:

//建立的時候賦值

struct student st =

;/**

struct student 是乙個型別

st是變數名

模擬 int a = 10;

struct student就是乙個結構體型別,是我們自定義出來的型別

*/struct student st2;

//建立完畢後,再賦值

st2.age =10;

st2.scrore =

10.2

; st2.*** =

'f';

printf

("%d, %f, %c\n"

, st.age, st.scrore, st.***)

;printf

("%d, %f, %c\n"

, st2.age, st2.scrore, st2.***)

;//使用st.age,取出結構體st裡面的成員變數age

取出結構體中的成員

兩種方式:

方式一

struct student st =

;st.age =10;

方式二struct student *pst =

&st;

pst->age =10;

//pst是指標變數,其裡面儲存的內容,是型別為struct student的結構體的位址。

模擬int a =10;

int*p =

&a;

pst->age的含義是:

通過指標變數pst,找到對應的struct student的結構體,取出結構體裡面的成員age。

pst->age,編譯器會將其轉換為(*pst).age

pst->age 等價於 (*pst).age 也等價於 st.age

結構體變數不能±*/。但,結構體變數可以相互賦值 (st1 = st2);

資料結構學習基礎:

重中之重

struct node

;struct node *phead;

//phead用來儲存鍊錶的頭結點的位址。其實,也就是頭指標

也可以使用typedef定義

typedef

struct node node,

*pnode;

//node等價於struct node. pnode等價於struct node *

c語言結構體知識點

一 strlen和sizeof的區別 include include main 答案為6和5.注意這個字串的長度用strlen來求的話,我們就不用算後面的 0,但是用sizeof來算的話就要算入 0.0 ascii不為0,但是 0 的為空值。字元賦值 char sp,s 10 如果是sp hello...

c語言結構體知識點

一 結構體和共用體以或使用者定義型別 如 typedef 型別名 識別符號 typedef int integer 該語句把ineger說明成了乙個int 的型別名,在此說明之後,可以用識別符號integer來定義整型變數 例如 ineger a 等價於int a 例如 typedef char c...

結構體知識點總結

對於結構體的知識點,我主要分為以下幾點來講解 結構體的宣告 結構體型別的建立 結構體成員的訪問 結構體的初始化 結構體內存對齊 位段。1.結構體的宣告 struct stu 分號不能丟2.結構體型別的建立 有兩種建立的方法,第一種 struct stu struct stu s1 定義了乙個結構體變...