C語言typedef struct詳解

2021-07-10 00:02:04 字數 1162 閱讀 2558

在c中定義乙個結構體要用typedef,如:

typedef struct student stu;

於是在宣告變數的時候就可以:stu stu1;(如果沒有typedef就必須用struct student stu1;來宣告)。這裡的stu實際上就是struct student的別名:stu == struct student.

當然其實這裡可以不寫student,如下:

typedef struct stu;

這裡也就必須使用stu stu1來宣告物件了。

請看下面的**:

typedef struct tagmystruct mystruct;

上面的tagmystruct是識別符號,mystruct是變數型別。上述**其實完成了兩個操作:

(1)定義乙個結構體:

struct tagmystruct;
tagmystruct稱為tag,即標籤,實際上是乙個臨時名字,不論是否有typedef struct關鍵字和tagmystruct一起,都構成了這個結構體。此時我們可以使用struct tagmystruct varname來定義變數。但是注意,使用tagmystruct varname來定義變數是不對的。因為struct和tagmystruct合在一起才能表示乙個結構體型別。

(2)typedef為這個新的結構起了乙個名字,叫mystruct.

typedef struct tagmystruct mystruct. 因此mystruct實際上相當於struct tagmystruct,我們可以使用mystruct varname來定義變數。

對於同樣的**,在c和c++中也有不同的理解。如下:

typedef struct tagmystruct mystruct;
在c中,這個結構體宣告結構體變數的方式有兩種:

1)struct tagmystruct 變數名;

2)mystruct 變數名;

在c++中:

1)struct tagmystruct 變數名;

2)mystruct 變數名;

3)tagmystruct 變數名;

本文參考:

C語言結構體定義 typedef struct

c語言規範,定義結構體 typedef struct answer header answer header t,panswer header t answer header為結構名,這個名字主要是為了在結構體中包含自己為成員變數的時候有用 answer header t為struct answer...

typedef和typedef struct的區別

今天做的專案中,看師兄寫的 有typedef struct,可是自己之前一直都不是特別了解這個是具體代表什麼意思,因為平時很少習慣用這個,一般都是直接就宣告類了,所以上網查了下,現在有所明朗了。分三塊來講述 1 首先 在c中定義乙個結構體型別要用typedef typedef struct stud...

C語言 C語言組成

c語言由多個 c 檔案和 件組成 c c語言源 檔案 h c語言標頭檔案 c檔案 組成 1 標頭檔案 include include student.h 包括起來的是系統的標頭檔案 包含起來的是自己定義的檔案 2 巨集定義 define a.不帶引數的巨集 define 巨集名 替換的內容 defi...