1、結構體型別的定義和變數的定義
用途:把不同型別的資料組合成乙個整體,類似j**a中的類,但不同的是,c語言的構造體中木有函式(即j**a中的方法)———自定義資料型別
1.1 定義乙個結構體型別的一般形式
struct [結構體名]//struct是關鍵字,
不能省略;結構體名為合法識別符號。
;//注意不要忘記這裡的 ;
1.2 定義結構體型別變數的3種方法
1.2.1 先定義結構體型別,再定義變數名
struct student
; struct student stu1,stu2;
1.2.2 定義結構體型別同時定義結構體型別變數:
struct student
stu1,stu2;
1.2.3 直接定義結構體型別變數:
struct
stu1,stu2;
說明:
結構體型別與結構體變數概念不同
型別:不分配記憶體; 變數:分配記憶體
型別:不能賦值、訪問、運算; 變數:可以
結構體可巢狀
結構體成員名與程式中變數名可相同,不會混淆
例:
例 struct date
;struct student
stu;
1.3 結構體變數的初始化
一般格式
結構體型別 結構體變數名=;
方法一:
struct student
stu=;
方法二:
例2:
struct student
;struct student
stu=;
1.4 結構體變數的引用
1.4.1對結構體型別資料的整體引用
賦值運算
ansi c允許兩個相同結構的結構體變數直接賦值
例:
struct student li,zhang=;
li=zhang; //將zhang物件拷貝乙份賦值給li
/* 但li=;是非法的
*/
1.4.2 求結構體型別資料的位元組數
sizeof(變數名或型別名);
1.4.3 結構體型別資料成員的引用
引用規則:結構體變數出同型別賦值外,不能整體引用,只能引用變數成員
引用方式: 結構體變數名.成員變數
stu.name = "dashan"
;
1.4.4 巢狀結構體中成員的引用
結構體巢狀時,逐級引用
struct student
birthday;
}stu1,stu2;
//給出生日期的年份賦值
stu1.birthday.year = 1999;
2、結構體陣列
2.1 結構體陣列的定義及初始化
2.1.1結構體陣列的定義,與定義結構體型別變數很類似,也有三種形式
形式一:
struct student
;struct student stu[2];
形式二:
struct student
stu[2];
形式三:
struct
stu[2];
2.1.2 結構體陣列的引用
結構體陣列元素的引用
struct student
str[3]=};
str[1]=str[0];
結構體陣列元素成員的引用
引用方式: 結構體陣列名[下標].成員名
struct student
str[3];
stu[1].age++;
strcpy(stu[0].name,」zhaoda」);
3、結構體和指標
3.1 結構體指標變數的定義
定義形式:struct 結構體名 *結構體指標名;
struct student *p;
//此時指標變數*p中存放的是--結構體變數在記憶體的起始位址
//例:
struct student
stu;
struct student *p=&stu;
3.2 結構體指標變數的引用
使用結構體指標變數引用成員形式
(*結構體指標變數名).成員名 <=> 結構體指標變數名->成員名 <=> 結構體變數名.成員名
例:
int n;
int*p = &n;
*p = 10; <=> n = 10;
struct student
stu1;
struct student *p = &stu1;
stu1.num=101; <=> (*p).num=101; <=> p->num=101;
C語言學習筆記 結構體
1 結構體定義 結構體是將不同型別的資料按照一定的功能需求進行整體封裝,封裝的資料型別與大小均可以由使用者指定。2 結構體宣告 宣告乙個結構體型別的一般形式為 struct 結構體名 例如 struct book 注意 結構體名 的命名規範是全部使用大寫字母。3 定義結構體變數 定義結構體型別變數有...
C語言學習筆記 結構體
struct stu 順帶宣告 在結構體宣告的最後的分號前加stu1,stu2這樣的變數名,不需要寫結構體的名字。利用結構體名來宣告變數 struct stu stu3 struct stu stu1,stu2,stu3 這樣的語句中struct stu就可以理解成變數宣告前的int,double等...
C語言學習筆記 結構體
結構體是一種資料型別,用 struct 關鍵字來修飾,定義乙個結構體可以這樣 123 45 struct teacher 如果用 typedef 修飾,就可以直接使用 teacher 123 4567 typedef struct teacher teacher teacher null 為結構體申...