是什麼差異
typedef struct complex {
int x;
int y;
};
和
typedef struct complex {
int x;
int y;
} comp;
是什麼在第二種情況下,額外comp
做有什麼區別? 我曾嘗試在第一種情況下定義一個complex
類型的新變量,並在第二種情況下使用comp
,兩者都產生了相同的結果...請幫助!
是什麼差異
typedef struct complex {
int x;
int y;
};
和
typedef struct complex {
int x;
int y;
} comp;
是什麼在第二種情況下,額外comp
做有什麼區別? 我曾嘗試在第一種情況下定義一個complex
類型的新變量,並在第二種情況下使用comp
,兩者都產生了相同的結果...請幫助!
第一個typedef
沒用,編譯可能會給你一個警告。
在第二個typedef
之後,無論何時使用struct complex
作爲類型,您都可以使用comp
代替。可以修改第二代碼到該等效形式:
struct complex {
int x;
int y;
};
typedef struct complex comp;
可以看到,struct complex
限定類型,而typedef
給它的替代名稱。
struct complex {
int x;
int y;
} comp;
這是創建複雜類型變量的簡寫。在之前存在的comp是 ;因此它被視爲類型complex.look的變量AR下面的代碼也
struct {
int x;
int y;
} comp;
您也可以與創建它的結構類型的變量老編譯器做到這一點。
typedef的目的是爲由一個或多個類型組件構成的類型聲明指定一個簡單的名稱。
在第一個聲明中,不要爲名爲complex的結構指定任何名稱。因此,編譯器會生成一個警告:使用的typedef與結構[或工會]當
i.e. warning: declaration does not declare anything
通常,優選的是(以下詳細)使用未命名的結構,如下所示:
typedef struct {int x; int y;} complex;
長話短說:
struct complex {
int x;
int y;
};
// forces you to use :
struct complex c;
但是:
typedef struct complex {
int x;
int y;
} comp;
// allows you to use :
comp c;
Typedefs只是一個可讀性的問題
請注意'變量名'在typedef下有不同的含義,並且這不是您所描述的情況。 – user3125367