C語言學習 結構體與共用體

2021-10-20 06:05:49 字數 3038 閱讀 8109

結構體的一般形式為:

struct 結構體名:用來標識(zhì)乙個結構體

; 注意:這裡一定要寫分號:因為宣告結構體也是乙個c語言語句

宣告了乙個結構體,相當於構造了一種新的資料型別,此時系統並不為它分配記憶體空間,只有定義力結構體型別的變數,系統才為該變數分配記憶體空間,宣告了結構體後,就可以定義結構體型別的變數,定義

的一般形式為:

結構體名 變數名;

例如:struct person p1,p2;

這個是以person為資料型別,定義了兩個變數p1,p2;struct 為定義結構體變數的關鍵字.定義力結構圖變數後,系統會為他分配空間

位元組對齊:就是加快系統的訪問效率

三種定義結構體的方法:

1struct person 宣告了結構體名字

p1,p2; 同時定義了兩個結構體變數

2struct

p1,p2; 這個只是定義了兩個結構圖變數,但是沒有宣告結構體的名字

3 巢狀結構體

struct date

;struct person

總結:定義在前面的是結構體名字,在後面的是變數名字

引用和初始化結構體變數

一般的形式是:結構圖變數.成員名

例子:strcpy(p1.name,「john」);

p1.age=24;

.的作用:.是成員運算子,用於取得結構體中的成員,他在所有的運算子中 優先順序最高

巢狀的初始化的方式:p1.birthday.year = 1985;//這裡的p1和birthday都是結構圖變數名

定義的同時進行初始化: struct person p2=;

注意:結構體中的變數成員也可以像其他的變數一樣進行各種初始化 p1.age++ //.的優先順序是最高的

結構體和陣列:結構體中可以有陣列型別的成員,陣列的元素也可以是結構體

例子:struct student s[2] =};

結構體和指標

結構體中各個成員按順序連讀存放在記憶體中,乙個結構體指標指向結構體變數,結構體指標所儲存的是他指向的結構體變數所佔記憶體的首位址

事例:struct student s1;

struct student *p;

s1.number=10002;

s1.***=『m』;

s.age=22;

strcpy(s1.name,「liu」);

strcpy(s1.addr,「guang dong」);

p=&s1;

printf("%d,%s,%c,%d,%s\n",p->number,p->***,p->age,p->addr);

在c語言中為了方便使用和直觀,吧(*p).number改為p->number.這兩種寫法都是正確的,但是基本上使用的是第二種

語法: 指標->結構體成員

p->number++ 這個是可以的,因為->與.的結合性都是一樣高的,所以先與這兩個結合,取得number的值過後,然後再對這個值進行自加

++pp->number 這個的意思是:先得到number的值,然後再自加

結構體的一般形式為:

struct 結構體名:用來標識(zhì)乙個結構體

; 注意:這裡一定要寫分號:因為宣告結構體也是乙個c語言語句

宣告了乙個結構體,相當於構造了一種新的資料型別,此時系統並不為它分配記憶體空間,只有定義力結構體型別的變數,系統才為該變數分配記憶體空間,宣告了結構體後,就可以定義結構體型別的變數,定義

的一般形式為:

結構體名 變數名;

例如:struct person p1,p2;

這個是以person為資料型別,定義了兩個變數p1,p2;struct 為定義結構體變數的關鍵字.定義力結構圖變數後,系統會為他分配空間

位元組對齊:就是加快系統的訪問效率

三種定義結構體的方法:

1struct person 宣告了結構體名字

p1,p2; 同時定義了兩個結構體變數

2struct

p1,p2; 這個只是定義了兩個結構圖變數,但是沒有宣告結構體的名字

3 巢狀結構體

struct date

;struct person

總結:定義在前面的是結構體名字,在後面的是變數名字

引用和初始化結構體變數

一般的形式是:結構圖變數.成員名

例子:strcpy(p1.name,「john」);

p1.age=24;

.的作用:.是成員運算子,用於取得結構體中的成員,他在所有的運算子中 優先順序最高

巢狀的初始化的方式:p1.birthday.year = 1985;//這裡的p1和birthday都是結構圖變數名

定義的同時進行初始化: struct person p2=;

注意:結構體中的變數成員也可以像其他的變數一樣進行各種初始化 p1.age++ //.的優先順序是最高的

結構體和陣列:結構體中可以有陣列型別的成員,陣列的元素也可以是結構體

例子:struct student s[2] =};

結構體和指標

結構體中各個成員按順序連讀存放在記憶體中,乙個結構體指標指向結構體變數,結構體指標所儲存的是他指向的結構體變數所佔記憶體的首位址

事例:struct student s1;

struct student *p;

s1.number=10002;

s1.***=『m』;

s.age=22;

strcpy(s1.name,「liu」);

strcpy(s1.addr,「guang dong」);

p=&s1;

printf("%d,%s,%c,%d,%s\n",p->number,p->***,p->age,p->addr);

在c語言中為了方便使用和直觀,吧(*p).number改為p->number.這兩種寫法都是正確的,但是基本上使用的是第二種

語法: 指標->結構體成員

p->number++ 這個是可以的,因為->與.的結合性都是一樣高的,所以先與這兩個結合,取得number的值過後,然後再對這個值進行自加

++pp->number 這個的意思是:先得到number的值,然後再自加

C語言學習筆記之結構體與共用體

結構體 將不同型別的資料組合成乙個有機的整體,以便引用 結構體中的元素也可以為結構體型別的 for exmple num name age score addr 10010 lifei m 18 87.5 beijing 宣告乙個結構體變數的形式 struct 結構體名稱 結構體元素的輸出 結構體變...

C語言結構體與共用體02

小甲魚結構體與共用體02 原始碼 原始碼 做乙個簡單的通訊錄 簡單的通訊錄 原始碼 include struct stu boy1 void main 指向結構體型別資料的指標 結構指標變數說明的一般形式 struct 結構體 結構指標變數名 例如,在原始碼 中定義了stu這個結構,如要說明乙個指向...

結構體與共用體

1.定義乙個機構體的形式 struct 結構名 2.定義結構體變數 變數名表列 變數名表列 3.結構體成員的表示方法 結構變數名.成員名 例如 boy1.num 如果成員本身又是乙個結構則必須逐級找到最低階的成員才能使用。例如 boy1.birthday.month 4.結構體陣列 方法和結構變數相...