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_流苏

如有错误,还请指正!


目录
打赏
0
0
0
0
0
分享
相关文章
C++入门1——从C语言到C++的过渡
C++入门1——从C语言到C++的过渡
97 2
【C语言程序设计——入门】C语言入门与基础语法(头歌实践教学平台习题)【合集】
本文档介绍了C语言环境配置和编程任务,主要内容包括: - **C语言环境配置**:详细讲解了在Windows系统上配置C语言开发环境的步骤。 - **第1关:程序改错**:包含任务描述、相关知识(如头文件引用、基本语法规则)、编程要求、测试说明及通关代码。 - **第2关:scanf函数**:涉及`scanf`和`printf`函数的格式与使用方法,提供编程要求、测试说明及通关代码。 文档结构清晰,涵盖从环境搭建到具体编程任务的完整流程,适合初学者学习和实践。
59 4
|
2月前
|
【C语言程序设计——入门】基本数据类型与表达式(头歌实践教学平台习题)【合集】
这份文档详细介绍了编程任务的多个关卡,涵盖C语言的基础知识和应用。主要内容包括: 1. **目录**:列出所有关卡,如`print函数操作`、`转义字符使用`、`数的向上取整`等。 2. **各关卡的任务描述**:明确每关的具体编程任务,例如使用`printf`函数输出特定字符串、实现向上取整功能等。 3. **相关知识**:提供完成任务所需的背景知识,如格式化输出、算术运算符、关系运算符等。 4. **编程要求**:给出具体的代码编写提示。 5. **测试说明**:包含预期输入输出,帮助验证程序正确性。 6. 文档通过逐步引导学习者掌握C语言的基本语法和常用函数,适合初学者练习编程技能。
55 1
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
指针是一个变量,它存储另一个变量的内存地址。换句话说,指针“指向”存储在内存中的某个数据。
129 3
【C语言】指针的神秘探险:从入门到精通的奇幻之旅 !
|
3月前
|
【C语言】typedef 关键字详解
`typedef` 关键字在C语言中用于定义现有数据类型的别名,提高代码的可读性和可维护性。它常用于简化复杂数据类型、定义函数指针类型以及处理联合体和枚举类型。掌握 `typedef` 的用法可以使你的代码更加清晰和易于管理。
178 1
C语言中的预处理器指令,涵盖其基本概念、常见指令(如`#define`、`#include`、条件编译指令等)、使用技巧及注意事项
本文深入解析C语言中的预处理器指令,涵盖其基本概念、常见指令(如`#define`、`#include`、条件编译指令等)、使用技巧及注意事项,并通过实际案例分析,展示预处理器指令在代码编写与处理中的重要性和灵活性。
107 2
C语言:typedef 和 define 有什么区别
在C语言中,`typedef`和`#define`都是用来创建标识符以简化复杂数据类型或常量的使用,但它们之间存在本质的区别。`typedef`用于定义新的数据类型别名,它保留了数据类型的特性但不分配内存。而`#define`是预处理器指令,用于定义宏替换,既可用于定义常量,也可用于简单的文本替换,但在编译前进行,过度使用可能导致代码可读性下降。正确选择使用`typedef`或`#define`可以提高代码质量和可维护性。
初识C语言1——C语言入门介绍
初识C语言1——C语言入门介绍
61 1
|
5月前
|
回溯入门题,数据所有排列方式(c语言)
回溯入门题,数据所有排列方式(c语言)
C语言------程设设计入门
这篇文章是C语言程序设计的入门教程,涵盖了C程序的实现过程、VC集成开发环境的使用、基本数据类型的使用、格式控制字符的作用,以及通过示例代码演示了如何使用printf()函数输出不同类型的数据。
C语言------程设设计入门
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等