程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> C語言typedef struct詳解

C語言typedef struct詳解

編輯:關於C

在C中定義一個結構體要用typedef,如:

typedef struct Student {
    int a;
}Stu;
於是在聲明變量的時候就可以:Stu stu1;(如果沒有typedef就必須用struct Student stu1;來聲明)。這裡的Stu實際上就是struct Student的別名:Stu == struct Student.

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

typedef struct {
    int a;
}Stu;

這裡也就必須使用Stu stu1來聲明對象了。

請看下面的代碼:

typedef struct tagMyStruct{
    int iNum;
    long lLength;
} MyStruct;

上面的tagMyStruct是標識符,MyStruct是變量類型。上述代碼其實完成了兩個操作:

(1)定義一個結構體:

struct tagMyStruct{
    int iNum;
    long lLength;
};
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{
    int iNum;
    long lLength;
} MyStruct;
在C中,這個結構體聲明結構體變量的方式有兩種:

1)struct tagMyStruct 變量名;

2)MyStruct 變量名;

在C++中:

1)struct tagMyStruct 變量名;

2)MyStruct 變量名;

3)tagMyStruct 變量名;
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved