譚浩強C 結構體

2022-04-04 15:27:27 字數 2239 閱讀 7936

一、結構體的定義

1、定義形式

struct 結構名

;       //定義為語句,分號不能丟

2、結構型別變數的宣告

(1)宣告形式1

struct student

st1,st2,st3;

(3)結構體變數的賦值

如上例:

struct student

st1=;

3、結構陣列的定義

struct student

stu[50]=,

,};   //定義並初始化50個陣列元素,每個元素均具有結構體student的結構。

二、結構指標

1、宣告形式

struct 結構名 *指標變數名      //方法一:須在宣告結構指標變數前應已說明該結構體

struct 結構名

*指標變數名;    //方法二:與結構體變數一樣

2、結構指標的賦值

struct student;

p=&st1;  //取該結構體變數的首位址

3、通過結構指標變數訪問結構變數成員

若st1為上述student結構體變數,p為該結構體指標變數:

使p=&st1;則可用下列方法訪問st1各成員:

p->num、p->name、p->score。

或(*p).num、(*p).name ...

與st1直接引用:st1.num都可以用來表示st1的成員。

4、指向結構陣列的指標

struct student

stu[10]=;                //宣告並初始化結構陣列stu

struct student *p;            //宣告結構指標p

p=stu;        //對p賦值,指向陣列stu首位址

for(;pprintf("%d,%s",p->num,p->name[10]);  //通過指標變數引用結構陣列元素的成員

三、動態儲存分配

1、malloc函式

(型別說明符*)malloc(n)

如:(int*)malloc(100);   

(struct student*)malloc(sizeof(struct student));

2、calloc函式

(型別說明符*)calloc(n,n) //動態儲存區內分配n個長度為n位元組的連續區域,返回值為該區首位址,(型別說明符*)表示將該返回值指標強制轉換成該型別指標;

3、free函式

free(void*ptr);  //釋放指標變數ptr指向的一塊記憶體空間,使用free函式前:ptr指向的必須是事先通過malloc或calloc分配的區域。

四、鍊錶

如何分配空間來儲存學生的資料?可想到使用結構體陣列,但如何確定學生的數量?新增或刪減學生如何處理?引申出鍊錶描述:

鍊錶各元素首先均是乙個結構體,各個元素稱為結點,各結點對應結構體內有一成員為指標變數,指向該結點下乙個結點的首位址,第0個結點稱為頭結點,僅存有指標變數,指向第1個結點;最後乙個結點的指標變數成員指向為空(null)。

例:建立乙個學生資料的鍊錶結構

struct

student;

//完成鍊錶結構宣告

inti;

struct student *head,*p1,*pass;

for(i=0;i)

//頭結點初始化

else //

用pass暫存當前位址,作為中間量傳遞

printf(

"input name:\n");

scanf("%s

",p1->name); //

鏈結結點內容輸入

p1->next=null; //

每次迴圈當前分配區為最後乙個結點,使其指標指向空

}return head; //

返回煉表頭結點

結構體巢狀結構體 C語言結構體

希望今年夏天的遺憾能成為你秋天的驚喜。網易雲熱評 一 結構體概念 可以簡單理解為把不同資料型別放到一起的陣列 二 結構體宣告與初始化 1 先宣告結構體型別再定義變數 2 同時定義變數 3 直接定義結構體型別變數 include include include include struct aiyou...

C 結構體共用體

12 c 中陣列初始化的特點 初始話陣列可以省略等號 初始話內容為空 不可縮窄操作 double people double people int number 不通過,因為浮點到整形為縮窄13 sizeof 計算陣列時候會比strlen 多計算乙個0位元組 14 字串的初始化和賦值,string ...

C語言結構體和結構體排序

結構體 結構體是一種構造資料型別 構造資料型別包括 陣列型別 結構體型別 共用體型別 定義 把不同的資料組合成乙個整體。結構體的一般形式struct 結構體名稱 struct是關鍵字 不要忘記這裡的分號定義結構體的三種方法 第一種 先定義結構體型別,在定義變數名 struct student str...