C语言入门与进阶——typedef与#define

简介: 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_流苏

如有错误,还请指正!


目录
相关文章
|
1月前
|
安全 编译器 C语言
C++入门1——从C语言到C++的过渡
C++入门1——从C语言到C++的过渡
52 2
|
5月前
|
C语言
指针进阶(C语言终)
指针进阶(C语言终)
|
1月前
|
编译器 C语言
C语言:typedef 和 define 有什么区别
在C语言中,`typedef`和`#define`都是用来创建标识符以简化复杂数据类型或常量的使用,但它们之间存在本质的区别。`typedef`用于定义新的数据类型别名,它保留了数据类型的特性但不分配内存。而`#define`是预处理器指令,用于定义宏替换,既可用于定义常量,也可用于简单的文本替换,但在编译前进行,过度使用可能导致代码可读性下降。正确选择使用`typedef`或`#define`可以提高代码质量和可维护性。
|
1月前
|
存储 Java 编译器
初识C语言1——C语言入门介绍
初识C语言1——C语言入门介绍
30 1
|
1月前
|
C语言
回溯入门题,数据所有排列方式(c语言)
回溯入门题,数据所有排列方式(c语言)
|
3月前
|
C语言
C语言------程设设计入门
这篇文章是C语言程序设计的入门教程,涵盖了C程序的实现过程、VC集成开发环境的使用、基本数据类型的使用、格式控制字符的作用,以及通过示例代码演示了如何使用printf()函数输出不同类型的数据。
C语言------程设设计入门
|
4月前
|
存储 Java C语言
【C语言入门】初识C语言:掌握编程的基石
【C语言入门】初识C语言:掌握编程的基石
67 4
【C语言入门】初识C语言:掌握编程的基石
|
3月前
|
NoSQL Java 编译器
C语言从入门到精通该怎样学?
持续学习与实践:编程是一门需要不断学习和实践的技能,要保持对新技术和新知识的敏感性,并持续进行编程实践。
57 1
|
4月前
|
存储 Java 程序员
【C语言入门】C语言入门:探索编程世界的基础概念
【C语言入门】C语言入门:探索编程世界的基础概念
105 2
|
4月前
|
前端开发 C语言 C++
C语言入门02---环境搭建
C语言入门02---环境搭建