1. 程式人生 > >typedef struct 與 struct

typedef struct 與 struct

自然 對象 別名 struct bsp 面向對象 如果 我們 此外

學c++之前最好先學c。特別要說的是,一些雖然冠名為c++的項目的文件中卻大部分都是c的代碼。

比如我們這個例子:

在c語言中,定義一個結構體和其實適合c++中有區別的。比如我們有如下的代碼:

struct Animal

{

  float weight;

};

如果是c代碼,要定義一個Animal對象,則需要這麽寫:

struct Animal a1;

而如果是c++大家都熟悉,struct Animal可以當做類似class Animal來使用。那麽就是:

Animal a1;

明顯可以看得出來,因為c不是面向對象的,所以它的語法在針對對象的時候也有些蹩腳。所以要專門的告訴編譯器Animal是一個struct,不然編譯器不知道。

但是每次都這樣寫自然非常麻煩切不美觀。所以才有了typedef struct 原名 {結構體中的內容};別名; 這樣的格式。

typedef struct Animal

{

  float weight;
}Ani;

這樣 Ani 就等價於 struct Animal。定義一個變量的時候就可以寫成:

Ani a1;

最後說一下,不管是c代碼還是c++代碼,諸如 typedef struct 原名 {結構體中的內容};別名; 這樣的格式 來聲明結構體,在兩種語言中的意義是相同的,也就是所謂的抹掉了兩種語言之間的差別。此外還能保證這條語句是一個聲明語句而非定義了對象。因此這樣來聲明結構體,在c/c++的程序中是非常值得推薦的。

typedef struct 與 struct