一.列舉
1.列舉是乙個型別 乙個常量陣列
2.關鍵字:enum
1enum week;
3.宣告乙個enum week w 那麼sizeof(w)的大小是4
w可以等於以上七個裡面中的任意乙個 只能在範圍之內賦值
預設情況下 不賦值第乙個從0開始 mon=0 tue=1 以此類推
但例如對thu進行賦值 讓thu=100 那麼fri就是101
之所以大小是4 因為它就是乙個int型別的變數
列舉可以用巨集來代替 也可以說 列舉也是宣告常量的一種方式
1 #include23enum
week ;
4enum caiquan ;56
intmain()722
23return0;
24 }
二.聯合體
聯合體的所有成員共享一塊記憶體 聯合體的大小看最大的成員有多大
1 #include23typedef union myunion
4mu;
1011
intmain()
12
說明:這段**輸出的時候 是亂碼的
因為c是char 只有乙個位元組 但是a是int型別的 有四個位元組
但如果把下面兩行注掉 上面注掉的四行放開的話 就可以正常輸出 因為a已經被賦過值了
三.遞迴
1.定義:就是自己呼叫自己 呼叫過程執行不止一次
2.遞迴和迴圈的區別:速度的話還是要看迴圈的複雜度 但是遞迴消耗的空間比較大
3.寫遞迴的注意事項:寫遞迴 一定要把遞迴的出口設定好
4.例題:
①用遞迴完成階乘:
1 #include23int jiecheng(int
n);4
int jiecheng1(int
n);5
6int
main()712
13int jiecheng(int
n)14
2122
return
value;23}
2425
int jiecheng1(int
n)26
3132
return n * jiecheng1(n-1
);33 }
理解:5!=5*4! 4!=4*3! 3!=3*2! 2!=2*1! 1!=1
②斐波那契:n1
2345
678fib(n)11
2358
1321
1 #include23int fib(int
n);4
5int
main()611
12int fib(int
n)13
1819
return fib(n-1) + fib(n-2
);20 }
③用遞迴實現strlen:
1 #include23int mystrlen(char*str);45
intmain()611
12int mystrlen(char*str)
1318
19return
1 + mystrlen(++str);
20 }
理解:char* = 1 2 3 \0
str→1 return:1+mystrlen(2)
str→2 return:1+mystrlen(3)
str→3 return:1+mystrlen(\0)
str→\0 return:0
列舉和聯合體
列舉 列舉顧名思義就是一一枚舉。把可能的取值一一枚舉出來。比如,現實生活中 列舉的定義 enum day 星期 enum 性別 enum color 顏色 以上定義的 enum day,enum enum color 都是列舉型別。中的內容是列舉型別的可能取值,也叫列舉常量。這些可能取值都是有值的,...
列舉和聯合體
1 什麼是列舉 列舉顧名思義就是一一枚舉。把可能的取值一一枚舉。enum color 顏色 以上定義的 enum color 是列舉型別。中的內容是列舉型別的可能取 值,也叫列舉常量 2 列舉的值enum color 顏色 3 列舉的優點 1 增加 的可讀性和可維護性 2 和 define定義的識別...
結構體 聯合體 列舉
1 結構體struct 結構體的作用 在網路協議 通訊控制 嵌入式系統的c c 程式設計中,我們要傳送的不是簡單的位元組流 char型陣列 二是多種資料組合起來的乙個整體,其表現形式是乙個結構體。使用struct的注意事項 1 下面看乙個題目 結果 6 12 這裡涉及到結構體的記憶體對齊方式。1 關...