typedef + struct + 指針

c語言:typedef + struct + 指針

 (2011-12-26 16:07:38)
標籤: 

雜談

分類: c語言經驗總結理解
http://write.blog.csdn.net/postedit 
 
c語言規範,定義結構體:
typedef  struct ANSWER_HEADER
{
u8 u8Type;
u8 u8Code;
u32 u32TimeStamp;
struct ANSWER_HEADER *pNext;
}ANSWER_HEADER_T, *PANSWER_HEADER_T;
 
ANSWER_HEADER爲結構名,這個名字主要是爲了在結構體中包含自己爲成員變量的時候有用
ANSWER_HEADER_T爲struct  ANSWER_HEADER的別名
PANSWER_HEADER_T爲struct  ANSWER_HEADER*的別名
 
上面的定義方式等價於
 
struct ANSWER_HEADER
{
u8 u8Type;
u8 u8Code;
u32 u32TimeStamp;
struct ANSWER_HEADER *pNext;
};
typedef  struct ANSWER_HEADER ANSWER_HEADER_T;
typedef  struct ANSWER_HEADER *PANSWER_HEADER_T;
 
********************************************************************
結構的定義:
定義一個結構的一般形式爲:
struct 結構名
    {成員表列};
成員列表的形式爲:
 類型說明符  成員名;
 
例如 :
struct stu
{
 int num;
 char name[20];
 char sex;
 float score;
};
聲明結構變量的三種方法:
1.先定義結構類型,再聲明:
        struct stu 
        { 
         int num; 
         char name[20]; 
         char sex; 
         float score; 
        };
        struct stu boy1, boy2; 
        也可以用宏定義使一個符號常量來表示
        一個結構類型。 
        例如: 
        #define STU struct stu 
        STU 
        { 
         int num; 
         char name[20]; 
         char sex; 
         float score; 
        }; 
        STU boy1, boy2;
2.  在定義結構類型的同時說明結構變量
        例如: 
        struct stu 
         { 
             int num; 
             char name[20]; 
             char sex; 
             float score; 
        }boy1, boy2; 
        這種形式的說明的一般形式爲: 
        struct 結構名 
        { 
         成員表列 
        }變量名錶列;
 3.  直接說明結構變量。 
        例如: 
        struct 
        { 
         int num; 
         char name[20]; 
         char sex; 
         float score; 
        }boy1, boy2; 
        這種形式的說明的一般形式爲:
        struct
        { 
             成員表列 
        }變量名錶列;
        結構指針變量說明的一般形式爲: 
        struct 結構名 *結構指針變量名 
        例如:
        struct stu *pstu; 
        當然也可在定義 stu 結構時同時說明 pstu。
        例如:
        struct stu 
        { 
             int num; 
             char name[20]; 
             char sex; 
             float score; 
        }boy1, boy2, *pstu;
 
****************************************************************************************
 
下面是譚浩強老師c語言書中typedef一節:
類型定義符typedef 
C語言不僅提供了豐富的數據類型,而且還允許由用戶自己定義類型說明符,也就是說
允許由用戶爲數據類型取“別名”。類型定義符 typedef 即可用來完成此功能。例如,有整
型量 a,b,其說明如下: 
    int a,b; 
其中 int 是整型變量的類型說明符。int 的完整寫法爲 integer,爲了增加程序的可讀性,
可把整型說明符用 typedef 定義爲: 
typedef int INTEGER 
這以後就可用 INTEGER 來代替 int 作整型變量的類型說明了。  
例如: 
    INTEGER a,b; 
它等效於: 
    int a,b; 
用 typedef 定義數組、指針、結構等類型將帶來很大的方便,不僅使程序書寫簡單而且
使意義更爲明確,因而增強了可讀性。 
例如: 
    typedef char NAME[20];    表示 NAME 是字符數組類型,數組長度爲 20。然後可
用 NAME 說明變量,如: 
    NAME a1,a2,s1,s2; 
完全等效於: 
    char a1[20],a2[20],s1[20],s2[20] 
又如: 
 
typedef struct stu 
    char name[20]; 
    int age; 
    char sex; 
} STU; 
定義 STU 表示 stu 的結構類型,然後可用 STU 來說明結構變量: 
STU body1,body2; 
typedef 定義的一般形式爲: 
typedef 原類型名  新類型名  
其中原類型名中含有定義部分,新類型名一般用大寫表示,以便於區別。 
有時也可用宏定義來代替 typedef 的功能,但是宏定義是由預處理完成的,而 typedef
則是在編譯時完成的,後者更爲靈活方便。
發佈了1 篇原創文章 · 獲贊 26 · 訪問量 13萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章