用typedef定义类型

1、用typedef声明新的类型名来代替已有的类型名。

例:声明INTEGER为整型

#include "StdAfx.h"
#include<stdio.h>
#include<stdlib.h>
typedef int INTEGER;
void main()
{
    INTEGER i=1;
    int j=2;
    printf("%d%d\n\n",i,j);
}

2、声明结构类型

例:

#include "StdAfx.h"
#include<stdio.h>
#include<stdlib.h>
typedef struct{int month;int day;int year;}DATE;
void main()
{
    DATE date_one;
    date_one.month=3;
    date_one.day=24;
    date_one.year=2000;
    printf("%d-%d-%d\n",date_one.year,date_one.month,date_one.day);
}

3、声明NUM为整型

#include "StdAfx.h"
#include<stdio.h>
#include<stdlib.h>
typedef int NUM[100];
void main()
{
    NUM num;
    printf("%d\n\n",sizeof(num));
}

4、声明p为字符指针类型

#include "StdAfx.h"
#include<stdio.h>
#include<stdlib.h>
typedef char *P;
void main()
{
    P p1;
    p1="Lv";
    printf("%s",p1);
}

5、声明P为指向函数的指针类型,该函数返回整型值。

#include "StdAfx.h"
#include<stdio.h>
#include<stdlib.h>
typedef  void(*P)();
void fun();
void main()
{
    P p1;
    p1 = fun;
    (p1)();
}
void fun()
{
    printf("lv");
}

注:对数组而言,数组名就是它的地址,它的地址就是它本身。

说明:(1)用typedef可以声明各种类型名,但不能用来定义变量。

(2)用typedef只是对已经存在的类型增加一个类型名,而没有创造新的类型。

(3)当不同源文件中用到同一类型的数据时,常用typedef声明一些数据类型,把它们单独的放在一个文件中,然后再需要用到的文件中用#include命令把他们包含进来。

(4)使用typedef有利于程序的通用与移植。

(5)typedef与#define有相似之处,但二者是不同的。

区别:#define只是简单的代换,而typedef是如同定义变量一样声明一个类型。

02-20 08:01