1、基本概念
typedef 為C語言中的關鍵字,作用是為一個資料類型定義一個新的資料類型,包括内部資料類型(如int,char等)和使用者自定義類型(如struct等)。
程式設計中使用typedef的目的:一是給變量一個易記且意義明确的新名字,二是簡化一些類型比較複雜的類型聲明。
例如:typedef int INTEGER;
typedef Number_count num;
typedef與結構體
//——–線性表的單連結清單存儲結構—–//
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
思考:LinkList 代表的是類型還是
一個變量?LNode為什麼要定義一樣
的名字?
以上的定義可以分為兩步形成:
第一步:定義結構體
struct LNode{
ElemType data;
struct LNode *next;
};
第二步:利用typedef定義别名
typedef struct LNode LNode;
typedef struct LNode *LinkList;
//是以明顯LinkList 是結構體指針的名稱
為什麼定義的名稱要相同?
請看下面程式:
typedef struct LNode {
int *elem;
int length;
}SqList;
比較:
LNode La,Lb;
SqList La,Lb;
第一句應改為
struct LNode La,Lb
定義指向結構體的指針
很明顯前面的LinkList是一個指向結構體的指針
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList,**LinkList2;
//以上也就是将結構體struct LNode命名為LNode,可以用LNode直接定義結構體
//将struct LNode * 命名為LinkList;
//将struct LNode ** 命名為LinkList2;
區分下面幾組定義:
typedef int DataType ;
typedef DataType ARR1[4] ;
typedef ARR1 ARR2[4];
typedef int DataType ;
// 為最基本定義,将DataType定義為int型,便于擴充
typedef DataType ARR1[4] ;
//定義一個一維數組,數組的元素為整型值
等價于定義 typedef int ARR1[4];
typedef ARR1 ARR2[4];
//再定義一個一維數組,數組的元素類型為
ARR1型,不過ARR1型又是一個數組,是以ARR2實際上是個數組。是以上面完全等價于 typedef int ARR2[4][4]。