天天看点

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

继续阅读