typedef的用法

基本概念

typedef与结构体

typedef与数组

-------------------------------------

typedef是c语言中的关键字,作用是将一个数据类型定义为一个新的数据类型

包括内部类型(int,char,float等),和用户自定义类型(如struct等类型)。

------------------------------------

编程中使用typedef的目的:一是给变量一个易记,意义明确的新名字,二是简

话一些复杂的声明。

例如:typedef  int  INTEGER;

            typedef   Number_count   num;

------------------------------------

typedef与结构体

//----------线性表的单链存储结构---------//

typedef struct Lnode

{

int date;

        struct LNode *next;

}LNode,*LinkList ;

以上的定义可以分为两步形成:

第一步:

定义结构体:

struct LNode

{

int data;

struct LNoe *next ;

};

第二步:

利用typedef定义别名:

typedef struct LNode LNode ;

typedef struct LNode *LinkList ;

//LinkList是结构体指针的名称

为什么定义的名称要相同?(typedef struct LNode LNode )

请看下面下面定义:

typedef struct LNode

{

int data ;

struct LNode *next ;

}SqList ;

即:typedef struct LNode SqList ;

比较:

LNode La,Lb;  ---------->应改为:struct LNode La,Lb;

SqList La, Lb; ----------->应改为:struct LNode La,Lb;

定义一个指向结构体的指针

//很明显之前定义的LinkList是一个指向结构体的指针

typedef struct LNode

{

int data ;

struct LNode *next ;

}LNode,*Linklist1,**LinkList2;

//以上就是将结构体struct LNode 命名为LNode,可以用LNode直接定义结构体或声明结构体变量;

//将struct LNode*命名为LinkList1;

//将struct LNode**命名为LinkList2;

typedef与数组

------------------------------------

区分下面几组定义

typedef int Datatype;

typedef Datatype ARR1[4];

typedef ARR1 ARR2[4];

--------------------------------------

分析下面的程序:

#include<stdio.h>

typedef int Datatype;

typedef Datatype ARR1[4];

typedef ARR1 ARR2[4];

int main()

{

int i;

Datatype j;

ARR1 a;

ARR2 b;

for(i=0)

a[i]=2*(i+1);

printf("a is type of ARR1,a=");

for(i=0;i<4;i++)

printf("%-3d",a[i]);

printf("b is type of ARR1,b=");

for(i=0;i<4;i|++)

for(j=0;j<4;j++)

b[i][j]=i+j+2;

for(i=0;i<4;i|++)

{

for(j=0;j<4;j++)

printf("%-3d",b[i][j]]);

printf("\n");
}

return 0;

}

运行结果:

a is type of ARR1,a=2 4 6 8

b is type of ARR2,b=

2 3 4 5

3 4 5 6

4 5 6 7

5 6 7 8

由上可知ARR1是一个一维数组,ARR2是一个二维数组。

以上程序说明:

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

类似的可以作如下推广:

typedef ARR2 ARR3[4];

//等价于定义一个三维数组:typedef int ARR3[4][4][4];

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值