C语言入门——突破typedef与#define

举报
Code_流苏 发表于 2022/04/17 13:05:57 2022/04/17
【摘要】 C语言入门——突破typedef与#define

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_流苏
如有错误,还请指正!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。