C語言中結構體的認識

2021-07-09 10:34:30 字數 1866 閱讀 1443

1,結構體是什麼

結構體是組合資料型別的一種,其成員型別可以是相互關聯的基本資料型別也可以是結構體  型別

2,使用場合

當要處理大量有關聯的不同資料型別的時候,例如乙個學生的資訊,有學號(int),姓名(char *),年齡(int)等資訊,就可以使用結構體,大大提高效率

3,怎麼用

(1)宣告或者說定義結構體型別

與基本資料變數的定義不同,由於系統已經知道基本資料型別的結構,型別名 變數名

就可以搞定,但是結構體是使用者自己定義的,

首先要宣告或定義結構體型別,告訴系統有這個型別,是怎麼樣的,定義結構體型別的方式為:  使用關鍵字struct 後面跟上型別名

struct 型別名

如:struct student

; //這樣就定義了乙個結構體型別student,內部包含學生的各種資訊

(2)定義結構體變數

在宣告結構體型別(相當於乙個模板)後就可以定義結構體變數了,主要有三種方式:

1> >  宣告結構體型別和定義結構體變數分開(最常用和靈活的方式)

struct student

;//在宣告了結構體型別struct student後,定義結構體變數

struct student studnet1,student2;//定義了兩個結構體變數student1和student2

2>>  在宣告結構體型別的同時定義結構體變數。如:

struct student

studnet1,student2;

3>> 在宣告結構體型別的同時定義結構體變數(匿名物件),但是沒有型別名 如:

struct 

studnet3;

4,使用注意

1>>   結構體型別和結構體變數是兩個不同的概念,結構體型別相當於乙個模板,在編譯時是

不分配儲存空間的,只對定義的.

結構體變數按照模板的定義分配相應的儲存空間,這樣的話只能對結構體變數賦值,存

取和運算,而不能對結構體型別進行賦值,訪問和運算

2>> 同一作用域內不可重複定義結構體型別和結構體變數,匿名型別物件除外

3>>  可在函式內也可在函式外,效果及用法類似於區域性變數和全域性變數,也可以巢狀定義

4>>  可在函式內外定義同乙個結構體型別,同樣遵循就近原則

5>> 只有在定義結構體變數的同時才能批量初始化,定義結構體變數後,只能乙個乙個的初                   

始化5,與陣列的區別

1>> 結構體可以存不同型別的元素,而陣列只能存同一型別

2>> 結構體型別需要我們自已定義.陣列是用別的型別加[元素個數]

3>> 結構體內存分配方式很特別,使用對齊原則,不一定是所有元素的位元組數和,而陣列一定是 所   

有元素的位元組數和.

4>>  結構體指標可以指標名->結構體元素名(取元素);陣列不行

6,結構體陣列

結構體陣列本質是陣列,陣列元素是同一型別的結構體變數,例如定義乙個student結構體

陣列用於存放乙個班級所有學生的資訊

7,結構體指標

是指向結構體變數的指標,用法如下

struct person

; // 定義結構體型別

struct person per=;//定義結構體變數的同時批量初始化

struct person *p=&per; //定義指向結構體型別的指標,並初始化,使其指向per

然後就可以用指標引用和訪問結構體變數的元素了,具體三種方式如下

1>>>. p->name = "wangjintao";//給name成員變數賦值

2>>>. (*p).name = "wangjitnao";//給name成員變數賦值、

3>>>.    per.name="wangjitnao";

C語言中結構體

struct oursvoid main struct ours o2 01 結構體整體直接賦值的時候,即使字串也可以直接賦值 o1.str o2.str 錯誤,字串不能直接賦值 字串拷貝的方式 sprintf o1.str,02.str strcpy o1.str,o2.str 3.1 第一種情況...

C語言中的結構體

在 c語言中,結構體 struct 指的是一種資料結構,是c語言中聚合資料型別 aggregate data type 的一類。結構體可以被宣告為 變數 指標或 陣列等,用以實現較複雜的 資料結構。結構體同時也是一些元素的集合,這些元素稱為結構體的成員 member 且這些成員可以為不同的型別,成員...

c語言中的結構體

定義結構體變數 結構體 自定義的一種型別稱為構造型別,在c語言中稱為結構體 定義結構體 struct 結構體名 定義結構體變數 1.struct 結構體名 變數名 引用結構體成員 運算子.結構體變數.成員 定義結構體變數並初始化 struct 結構體名 變數名 結構體與陣列類似,定義之後不能直接整體...