C 和 C++ 中 struct 和 typedef struct 的區別
轉貼自「計算機科學論壇 」
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;
Dotblogs 的標籤: CPP