当前位置: 首页 > news >正文

define和typedef

目录

一、define

二、typedef

三、二者之间的区别


一、define

在我们写代码的日常中,经常会用到define去配合数组的定义使用

#define N 10
arr[N]={0};

 define不仅仅能做这些

#define是一种宏,我们首先来了解一下宏定义。

宏定义一般作用在C语言的预处理部分,而预处理的主要任务,例如删除注解,插入被#include包含的函数库,自己的头文件名等,而在预处理阶段我们就会把#define定义N变成10,所以与此同时在后面的编译链接等步骤就会看不见define

在预处理阶段,define只会替换,不会做任何的计算逻辑等处理,如:

#include <stdio.h>
#define N 1+5
int main()
{printf("%d",N*N);
}

注意:其处理结果不是6*6=36,而是1+5*1+5=11!!! 

二、typedef

在C语言中,typedef为一种关键字,与存储有关的关键字,与auto,extern,static,register等关键字不能出现在同一表达式中

其主要作用还是创建别名用于简化复杂的变量名

三、二者之间的区别

#define INT_PTR int*
typedef int* int_ptr;
INT_PTR a, b;
int_ptr c, d;

在上面代码中,a,b,c,d四个变量中,哪些是指针类型的变量?

答案为b是整型,a,c,d为指针类型

在#define这个宏预处理阶段将会转化为:

#define INT_PTR int*
INT_PTR a,b;
//int* a,b;

a是指针类型,b是整型;而对于typedef int* int_ptr;int_ptr c,d;c,d为指针类型

http://www.lryc.cn/news/300628.html

相关文章:

  • SpringCloud之Nacos用法笔记
  • 【c++】拷贝构造函数
  • 17.3.1.2 曝光
  • 【Win10 触摸板】在插入鼠标时禁用触摸板,并在没有鼠标时自动启用触摸板。取消勾选连接鼠标时让触摸板保持打开状态,但拔掉鼠标后触摸板依旧不能使用
  • 排序算法---桶排序
  • FPGA_工程_基于rom的vga显示
  • 代码随想录算法训练营第31天|● 理论基础 ● 455.分发饼干 ● 376. 摆动序列 ● 53. 最大子序和
  • 无人机地面站技术,无人机地面站理论基础详解
  • 2024.2.13
  • 论文阅读:四足机器人对抗运动先验学习稳健和敏捷的行走
  • .NET Core WebAPI中封装Swagger配置
  • 28. 找出字符串中第一个匹配项的下标
  • 宿舍|学生宿舍管理小程序|基于微信小程序的学生宿舍管理系统设计与实现(源码+数据库+文档)
  • CVE-2022-25487 漏洞复现
  • C#面:强类型和弱类型
  • nodejs和npm和vite
  • 相机图像质量研究(24)常见问题总结:CMOS期间对成像的影响--摩尔纹
  • Redis -- 数据库管理
  • 蓝桥杯(Web大学组)2023省赛真题:视频弹幕
  • 真假难辨 - Sora(OpenAI)/世界模拟器的技术报告
  • Linux第52步_移植ST公司的linux内核第4步_关闭内核模块验证和log信息时间戳_编译_并通过tftp下载测试
  • ctfshow-web21~28-WP
  • 鸿蒙开发系列教程(二十四)--List 列表操作(3)
  • 线性代数笔记2--矩阵消元
  • 透光力之珠——光耦固态继电器的独特特点解析
  • C#系列-​​​​​​​EntityFrameworkCore.Transactions.Abstractions应用场景+实例(38)
  • PMDG 737
  • 深入探索Midjourney:领航人工智能的新征程
  • ChatGPT高效提问—prompt实践(漏洞风险分析-重构建议-识别内存泄漏)
  • 【AIGC】Stable Diffusion 的提示词入门