C语言入门与进阶——突破typedef与#define
C语言里提供了typedef关键字,可是会容易和#define指令搞混淆
那怎么弄清楚呢?且看下文,
一、typedef
在了解typedef具体用来做什么的,我们先来从字面意思了解一下它:
typedef字面理解:类型定义(词典上其意思为名词:定义类型)
拆分来看 type + def type有类型的意思,那def就是定义了,
说到定义就有一个单词——define 定义的意思 其名词为definition
了解了它的字面意思,那我们就来了解一下
使用typedef的目的:
突破点:它可以为类型取一个新的名字
比如 typedef char CH;
此时就是typedef给char取了一个另外的新名字——CH
在这个类型定义的基础上,
我们可以这样写,CH a,b;
a,b就被定义为了字符型变量。
按照约定俗成的惯例来说,定义时会大写字母,以便提醒用户类型名称是一个象征性的缩写,但您也可以使用小写字母,如下:
typedef char ch
除了上述外,也可以使用 typedef 来为用户自定义的数据类型取一个新的名字。
例如,可以对结构体使用 typedef 来定义一个新的数据类型名字,用这个新的数据类型来直接定义结构变量。
实例:
#include <stdio.h> #include <string.h> typedef struct Articles { char title[20]; char author[20]; char subject[20]; } Atic; int main( ) { Atic a; strcpy( a.title, "C语言入门与进阶"); strcpy( a.author, "君之"); strcpy( a.subject, "编程语言"); printf( "文章标题 : %s\n", a.title); printf( "文章作者 : %s\n", a.author); printf( "文章类目 : %s\n", a.subject); return 0; }
运行后结果如图:
关于typedef先看到这,那么下面我们来看一下define
二、#define
#define字面理解:
就是定义的意思
使用目的:
我们可以借助#define做什么?
突破点:用于为各种数据类型定义别名
接下来我们再看一个简单的#define用法实例
实例:
假如有题目要求让我们借助#define定义最大值,来输出1-20。
#include <stdio.h> #define max 20 int main( ) { for(int i=1;i<=max;i++) printf("%d ",i); printf("\n"); return 0; }
输出结果如图
一看到这,这跟typedef也太像了吧!
但是,看着像,它们的不同倒还是有的:
三、typedef与#define的区别
区别:
- typedef 仅限于为类型定义符号名称,#define 不仅可以为类型定义别名,也能为数值定义别名,例如:可以定义 1 为 T,定义0为F。
- typedef 由编译器执行解释,而**#define** 语句 由预编译器处理
关于typedef与#define的问题就先说到这里,希望这篇文章对你们有所帮助!
个人感受:原本想分为三篇,一篇typedef、一篇#define、二者区别再加一篇,但是仔细想了想,还是一篇到底说清楚吧,希望能对你们有所帮助!
原创不易,喜欢的话还请多多点赞,关注予以支持!
作者:code_流苏
如有错误,还请指正!