Google Code Prettify

2013年10月2日 星期三

C/C++ typedef , struct , typedef struct 差別



一開始在摸C和C++時,常常搞混typedef , struct , typedef struct 的差別

這邊來做一下簡單的說明:



-----typedef-----

typedef 可以用來幫某種類型取名字

例如


typedef int Jack;  // 幫int取名叫Jack


因此我們就可以在設定變數時用Jack這個類型:

Jack age;     //age的型別是 int



-----struct-----

struct 可以建立一個多種類型的結構 (把它想成幫一群人取名字)

struct family{

int Ken;

float Sam;

};     //別忘了結尾要加分號


因此我們就可以在設定變數時用family這個結構:

這邊重點就來了,C和C++在宣告結構的變數時,有點不同,

C的宣告方式比較嚴謹:

C:

struct family Chen;    //Chen的型別是family這個結構,而family的型別是struct

C++:

family Chen;             //Chen的型別是family這個結構


因此有時候為了方便,我們可以在宣告結構時,就一起宣告變數,

這宣告結構變數的方式在C和C++都一樣:

struct family{

int Ken;

float Sam;

}; Chen                 //Chen的型別是family這個結構




當我們要呼叫Chen裡的成員時,只要用 .  來呼叫:

Chen.Ken=10;      //設定Ken=10;



-----typedef struct-----

這就是結合 typedef 和 struct 的一種方式,直接幫結構命名

在C和C++都一樣:

typedef struct family{

int Ken;

float Sam;

}Asia;    //把family這個結構命名為Asia


因此如果要建立family的結構變數時:

Asia Chen;    //沒加typedef之前,要用family Chen宣告 

要呼叫Chen的成員時,一樣只要用 . 來呼叫

Chen.Sam=10.5;








13 則留言:

  1. 謝謝作者
    淺簡表示這些的差異
    終於搞懂!!

    回覆刪除
    回覆
    1. 看了一堆網頁,終於在這邊搞懂了!

      刪除
    2. Vince 學習筆記: C/C++ Typedef , Struct , Typedef Struct 差別 >>>>> Download Now

      >>>>> Download Full

      Vince 學習筆記: C/C++ Typedef , Struct , Typedef Struct 差別 >>>>> Download LINK

      >>>>> Download Now

      Vince 學習筆記: C/C++ Typedef , Struct , Typedef Struct 差別 >>>>> Download Full

      >>>>> Download LINK hr

      刪除
  2. 請問作者C++物件導向的題目在哪邊要怎麼練習呢?

    回覆刪除
  3. struct family{

    int Ken;

    float Sam;

    }; Chen

    Chen後面要加分號(;)吧

    回覆刪除
  4. 請問 都可以幫結構命名的話,用typedef struct跟struct有什麼差別呢?

    回覆刪除
  5. struct family{
    int Ken;
    float Sam;
    }Chen;
    是這樣嗎?

    回覆刪除