列舉 聯合體 遞迴

2022-07-13 17:24:07 字數 1924 閱讀 5963

一.列舉

1.列舉是乙個型別 乙個常量陣列

2.關鍵字:enum

1

enum week;

3.宣告乙個enum week w 那麼sizeof(w)的大小是4

w可以等於以上七個裡面中的任意乙個 只能在範圍之內賦值

預設情況下 不賦值第乙個從0開始 mon=0 tue=1 以此類推

但例如對thu進行賦值 讓thu=100 那麼fri就是101

之所以大小是4 因為它就是乙個int型別的變數

列舉可以用巨集來代替 也可以說 列舉也是宣告常量的一種方式

1 #include2

3enum

week ;

4enum caiquan ;56

intmain()722

23return0;

24 }

二.聯合體

聯合體的所有成員共享一塊記憶體 聯合體的大小看最大的成員有多大

1 #include2

3typedef union myunion

4mu;

1011

intmain()

12

說明:這段**輸出的時候 是亂碼的

因為c是char 只有乙個位元組 但是a是int型別的 有四個位元組

但如果把下面兩行注掉 上面注掉的四行放開的話 就可以正常輸出 因為a已經被賦過值了

三.遞迴

1.定義:就是自己呼叫自己 呼叫過程執行不止一次

2.遞迴和迴圈的區別:速度的話還是要看迴圈的複雜度 但是遞迴消耗的空間比較大

3.寫遞迴的注意事項:寫遞迴 一定要把遞迴的出口設定好

4.例題:

①用遞迴完成階乘:

1 #include2

3int 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 #include2

3int fib(int

n);4

5int

main()611

12int fib(int

n)13

1819

return fib(n-1) + fib(n-2

);20 }

③用遞迴實現strlen:

1 #include2

3int 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 關...