天天看點

typedef1、基本概念typedef與結構體

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]。

繼續閱讀