C语言中typedef和define对比分析

简介: C语言中typedef和define对比分析

前言

相信很多同学都知道typedef和define但是有很多同学不知道什么时候使用typedef什么时候使用define那么下面就让我用一篇文章解决大家的疑问


一、typedef作用及用法

1.typedef作用

1.typedef用于给一个已经存在的数据类型重命名

2.typedef本质上不是产生新的类型


2.typedef用法

#include <stdio.h>
typedef int u32;
int main(void)
{
    u32 a = 1;
    printf("int size is %d u32 size is %d\n", sizeof(int), sizeof(u32));
    return 0;
}

运行结果

image.png

从代码和结果上来看typedef并不能产生新的数据类型,只是给已经存在了的数据类型重命名。


二、define作用及用法

1.define作用

1.define定义的宏可以在程序的任何位置使用

2.define定义之后的代码都可以使用这个宏

3.define可以定义常量并且这个常量不可被修改


示例:

#include <stdio.h>
#define ONE 1
int main(void)
{  
    printf("%d\n", ONE);
    return 0;
}

三、typedef和define区别

1.typedef是在程序编译时起作用,而define是在程序预编译时进行替换。

2.typedef会检查语法的正确性,define只是单纯的替换不会检查语法的正确性

下面程序中使用define方法不会报错,而使用typedef则是错误的

#include <stdio.h>
#define ONE adawdawdawd
typedef ONE adawdwadawdawda
int main(void)
{
    return 0;
}

总结

typedef和define的对比就到这里了,希望大家对typedef和define的认识更加深刻了,有什么不懂的话可以在评论区留言。

相关文章
|
4月前
|
前端开发 C语言
C语言06-HelloWorld执行流程分析
C语言06-HelloWorld执行流程分析
C语言06-HelloWorld执行流程分析
|
3月前
|
存储 C语言
【C语言】基础刷题训练4(含全面分析和代码改进示例)
【C语言】基础刷题训练4(含全面分析和代码改进示例)
|
1月前
|
编译器 C语言
C语言:typedef 和 define 有什么区别
在C语言中,`typedef`和`#define`都是用来创建标识符以简化复杂数据类型或常量的使用,但它们之间存在本质的区别。`typedef`用于定义新的数据类型别名,它保留了数据类型的特性但不分配内存。而`#define`是预处理器指令,用于定义宏替换,既可用于定义常量,也可用于简单的文本替换,但在编译前进行,过度使用可能导致代码可读性下降。正确选择使用`typedef`或`#define`可以提高代码质量和可维护性。
|
3月前
|
C语言
【C语言刷题训练】——第7节(含代码与分析思路)
【C语言刷题训练】——第7节(含代码与分析思路)
|
3月前
|
存储 C语言
【C语言】鹏哥C语言刷题训练营——第5节内容笔记(含代码全面分析和改进,讲解)
【C语言】鹏哥C语言刷题训练营——第5节内容笔记(含代码全面分析和改进,讲解)
|
5月前
|
程序员 C语言 C++
【C语言基础】:动态内存管理(含经典笔试题分析)-2
【C语言基础】:动态内存管理(含经典笔试题分析)
|
5月前
|
程序员 编译器 C语言
【C语言基础】:动态内存管理(含经典笔试题分析)-1
【C语言基础】:动态内存管理(含经典笔试题分析)
|
5月前
|
C语言
C语言学习记录——模拟字符串相关函数(strcpy、strlen、strcat)相关知识-const、typedef
C语言学习记录——模拟字符串相关函数(strcpy、strlen、strcat)相关知识-const、typedef
31 1
|
5月前
|
存储 C语言
C语言中的typedef关键字:为类型定义新名称
C语言中的typedef关键字:为类型定义新名称
|
5月前
|
自然语言处理 C语言 C++
程序与技术分享:C++写一个简单的解析器(分析C语言)
程序与技术分享:C++写一个简单的解析器(分析C语言)