C 语言 定义别名

C 语言提供了 typedef 关键字用来为类型取一个新的名字。

比如我们给 unsigned char 类型取一个 BYTE 的新名字,可以使用下面的方式

typedef unsigned char BYTE;

在定义了这个新的别名后,标识符 BYTE 可作为类型 unsigned char 的缩写,就像下面这样使用:

BYTE  b1, b2;

按照习惯,定义别名时会 大写字母,以便提醒开发者这个类型名称是一个象征性的缩写,当然也可以用小写,如下所示:

typedef unsigned char byte;

我们也可以使用 typedef 为用户自定义的数据类型取一个新的名字。

比如说,可以对结构体使用 typedef 定义一个新的数据类型名字,然后使用这个新的数据类型来直接定义结构变量。

看一个范例演示

/**
 * file: main.c
 * author: 简单教程(www.twle.cn)
 */

#include <stdio.h>
#include <string.h>

typedef struct WebSite
{
   char  name[50];
   char  domain[50];
   char  homepage[100];
} Web;

int main( )
{
   Web twle;

   strcpy( twle.name, "简单教程");
   strcpy( twle.domain, "www.twle.cn"); 
   strcpy( twle.homepage, "https://www.twle.cn/");

   printf( "网站标题 : %s\n", twle.name);
   printf( "网站域名 : %s\n", twle.domain);
   printf( "网站首页 : %s\n", twle.homepage);

   return 0;
}

编译和运行上面的范例,输出结果如下:

$ gcc main.c && a.out
网站标题 : 简单教程
网站域名 : www.twle.cn
网站首页 : https://www.twle.cn/

typedef 和 #define 区别

#define 是 C 预处理器指令,用于为各种数据类型定义别名,与 typedef 类似,但是它们有以下几点不同:

  • typedef 仅限于为类型定义符号名称 #define 不仅可以为类型定义别名,也能为数值定义别名,比如您可以定义 1 为 ONE。

  • typedef 是由编译器执行解释的 #define 语句是由预编译器进行处理的。

当需要定义别名的时候,推荐使用 typedef 关键字 如果是为了修改方便需要,可以使用 #define

范例 : #define 和 typedef 混合使用

/**
 * file: main.c
 * author: 简单教程(www.twle.cn)
 */

#include <stdio.h>

#define TRUE  1
#define FALSE 0

typedef unsigned char byte;

int main( )
{
   printf( "TRUE 的值: %d\n", TRUE);
   printf( "FALSE 的值: %d\n", FALSE);

   byte c = 'c';

   printf("c is:%c\n",c);

   return 0;
}

编译和运行上面的范例,输出结果如下

$ gcc main.c && a.out
TRUE 的值: 1
FALSE 的值: 0
c is:c
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.