C++:

  • // 在C和C++有三種定義結構的方法。
typedef struct {
int data;
int text;
} S1;
 

  • // 這種方法可以在c或者c++中定義一個S1結構

struct S2 {
int data;
int text;
};
 

  • // 這種定義方式只能在C++中使用,而如果用在C中,那麼編譯器會報錯

struct {
int data;
int text;
} S3;
 

  • //這種方法並沒有定義一個結構,而是定義了一個s3的結構變量,編譯器會為s3內存。

void main()
{
S1 mine1; // OK , S1 是一個類型
S2 mine2; // OK, S2 是一個類型
S3 mine3; // OK, S3 不是一個類型
S1.data = 5; // ERROR S1 是一個類型
S2.data = 5; // ERROR S2 是一個類型
S3.data = 5; // OK S3是一個變量
}
 

  • // 另外,對與在結構中定義結構本身的變量也有幾種寫法

struct S6 {
S6* ptr;
};
 

  • // 這種寫法只能在C++中使用

typedef struct {
S7* ptr;
} S7;
 

  • // 這是一種在C和C++中都是錯誤的定義

//如果在C中,我們可以使用這樣
 
typedef struct tagS8{
tagS8 * ptr;
} S8;

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 bkboy 的頭像
    bkboy

    Bret. Blogger

    bkboy 發表在 痞客邦 留言(0) 人氣()