1.引入
現實世界中的物體要 抽象成 計算機語言中的型別才能被計算機識別
屬性---->資料型別
學生:學號 int
性別 char
姓名 char name[20]
自定義型別:結構體、共用體、列舉
2.結構體
2.1定義格式
struct 結構體名
;「結構體名」:c語言合法的識別符號即可
資料型別 :c語言合法的資料型別
成員變數名:c語言合法的識別符號即可
例子:struct student
;struct student stu1;
struct student表示的是資料型別,stu1表示變數名
struct student *stu1;stu1表示指標變數名,struct student表示指標變數要指向的資料型別。
2.2記憶體中的存放
1.結構體型別所佔的記憶體是各成員變數的記憶體之和
ps:1.結構體分配的空間按變數的定義順序各自分配空間
2.記憶體對齊,與最長的對齊或者4的整數倍取乙個最小
2.3結構體變數的引用
struct student stu1;
1.結構體型別名.成員變數名
stu.no=100;
int b=stu.no;
struct student *p;
2.結構體變數名->成員變數名
1)p=&stu1;
2)p=(struct student *)malloc(sizeof(stu1));
p->no=10;
例:#include
#include
#include
struct student
;int main()
2.4結構體的初始化
1.對前面順序的n個進行初始化
struct student stu1=;
2.對任意進行初始化
struct student stu1=;
3.結構體陣列初始化化
struct student stu[5]=,{},{},{},{} };
2.5 struct
a,b,c;
a,b,c為變數名,型別為 struct ;
typeof(a) d;
3.聯合體
union 共用體名
;例:union a
;聯合體分配的空間是最大資料型別長度的空間。
#include
union a
;int main()
大端模式:低位址存高位元組的內容,高位址存低位元組的內容
小端模式:低位址存低位元組的內容,高位址存高位元組的內容
4.列舉
把乙個變數所有可能的值列舉出來
定義:enum 列舉名;
ps:1.列舉的值預設為乙個整型常量,預設處理為0,1,2,3....
2.列舉常量mon=4是錯誤的的,不可對它進行改變
3.enum day;那麼one後面對應的整型常量就應該為9 10 ...
#include
enum weekday;
enum day;
int main()
ex1.寫乙個**,判斷是大端模式還是小端模式?
ex2.從螢幕上輸入5個學生成績、學號、姓名,按成績大小輸出學生的成績、姓名、學號
struct student
;1.用scanf輸入 struct student stu[5];
2.排序
3.輸出
C語言基礎結構
一.順序結構程式設計 1.1格式化輸入輸出函式 printf函式以及scanf函式 includeint main 執行結果 1.2字元資料的輸入輸出 putchar函式以及getchar函式 includeint main 執行結果 aa 1.3 if語句 1.3.1if 表示式 判斷表示式是否成...
C語言基礎(十) 預處理
預處理就是在編譯之前所做的事情,所以也叫預編譯,主要有巨集定義 檔案包含處理和條件編譯。巨集定義指令是指用乙個指定的識別符號代表乙個字串,可以減少程式中重複書寫某些字串的工作量,使用巨集可以達到 一改全改 的 規範。巨集定義主要分為不帶引數的巨集定義 和 帶引數的巨集定義。不帶引數的巨集定義 def...
C語言基礎(十) 預處理
標頭檔案包含 條件編譯 作用 文字替換 提高 的可讀性 示例 1 define pi 3.1415926帶參巨集沒有引數型別 也沒有返回值型別 可以接受任意型別的引數 本質是替換 沒有任何檢查 示例 2 define add a,b a b在示例 2 中需要考慮優先順序問題 include defi...