博客之星TOP100|TOP63、阿里云专家博主、掘金优秀创作者、全网粉丝量6w+、全网访问量80w+ 本文章内容由 謓泽 原创 如需相关转载请提前告知博主 ⚠ 个人主页:謓泽的博客 专栏系列:【C】...注意️字符常量与之前所介绍的常量有所不同。字符常量可以分为①字符常量(单个字符的单引号)②字符串常量(两个及以上双引号) 字符常量是区分大小写的,'A'和'a'的字符是不一样的。...这两个字符代表不同的字符常量,'这对单直撇代表着定界符号,不属于字符常量的一部分。在C语言中字符串常量,系统会在字符串后面加'\0',作为字符串的结束标志。...who 直接常量 直接常用相当于是直接定义的常量也就是我们直接使用的常量,在数学上也叫做常数。 ...return 0; } void Cons_Print() { printf("%d\n", 123); printf("%lf %f\n", 1.2586, 3.141592); printf("%c\
1 概述 在工程规模较小,不是很复杂,与硬件结合紧密,要求移植性的时候,可采用宏定义简化编程,增强程序可读性。 当宏作为常量使用时,C程序员习惯在名字中只使用大写字母。...";" 使用#define来为常量命名一些优点: 程序会更易读。...我们仅需要改变一个宏定义,就可以改变整个程序中出现的所有该常量的值; 可以帮助避免前后不一致或键盘输入错误; 控制条件编译; 可以对C语法做小的修改; 带参数的宏 带参数的仍要遵循上述规则,区别只是宏名后面紧跟的圆括号中放置了参数...尽量使用const取代宏来定义符号常量。...+/C语言第3版 https://www.cnblogs.com/southcyy/p/10155049.html
一、#define的基本语法 在C语言中,常量是使用频率很高的一个量。常量是指在程序运行过程中,其值不能被改变的量。常量常使用#define来定义。...使用#define定义的常量也称为符号常量,可以提高程序的运行效率。...除了编译语言中的宏,宏这个概念也被广泛应用于其他环境中,比如键盘宏和宏语言。键盘宏是将一系列小命令或动作转化为一系列指令,以简化日常工作。...Word使用宏语言Visual Basic将宏作为一系列指令来编写。 Excel办公软件自动集成了“VBA”高级程序语言,用此语言编制出的程序就叫“宏”。...三、#define定义常量用法 ①宏常量 我们最常使用到的#define的用法就是用#define来定义一个符号常量,而要修改时,只需修改#define这条语句就行了,不必每处代码都修改 基本语法
常量就像是常规的变量,只不过常量的值在定义后不能进行修改。 常量可以直接在代码中使用,也可以通过定义常量来使用。 整数常量 整数常量可以是十进制、八进制或十六进制的常量。...您可以使用小数形式或者指数形式来表示浮点常量。 当使用小数形式表示时,必须包含整数部分、小数部分,或同时包含两者。当使用指数形式表示时, 必须包含小数点、指数,或同时包含两者。...字符常量可以是一个普通的字符(例如 'x')、一个转义序列(例如 '\t'),或一个通用的字符(例如 '\u02C0')。...; //系统对字符串常量自动加一个 '\0' 定义常量 在 C 中,有两种简单的定义常量的方式: 使用 #define 预处理器。 使用 const 关键字。...double a; a = (float)N/(float)2; 在编译时我们预想 a=2.5,实际打印结果是 3.5 原因是在预处理阶段,编译器将 a=N/2 处理成 a=2+3/2,这就是 define 宏的边缘效应
前言 在开发中,也许我们会经常使用到宏定义,或者用const修饰一些数据类型,经常有开发者不知道怎么正确使用,导致项目中乱用宏定义与const修饰符。...本篇主要介绍在开发中怎么正确使用const与define(宏定义) 当我们想定义全局共用的一些数据时,比如通知名字,动画时长等等,我们可以用宏、常量、变量: 宏: // 注意后面不需要带符号...甚至有相同后缀的字符串也可以优化,你可以使用GCC编译测试,Hello world与world两个字符串,只存储前面一个。...取的时候只需要给前面和中间的地址,如果是整型、浮点型会有多分拷贝,但这些数写在指令中,占的只是代码片段而且,大量使用宏会导致二进制文件变大。...define在预处理阶段进行替换,const常量在编译阶段使用; define不做类型检查,只进行替换,const常量有数据类型,会执行类型检查; define不能调试,const常量可以调试; define
不带参数的宏的定义方式如下(这也是我们经常用到的宏定义) #define 宏名 字符串 //没有分号,说没有分号倒不如说最好不要加分号 这里说下原因吧:因为宏定义它并不是C语言的语句,所以不用加分号...宏名实际上就是一个标识符,必须要符合C语言当中标识符的语法规定的。 标识符的规则:字母、数字、下划线,不以数字开头,注意:关键字不能作为标识符!...但是对于宏,是不能出现递归的。 当预处理搜索#define定义的符号的时候,字符串常量的内容并不被搜索。...命名事项 相信有些小伙伴已经发现了这个函数的宏的使用语法和函数是非常类似滴。所以语言本身就会没办法帮我们区分二者的一些使用。...,但是由于我们使用了#undef取消宏定义了。
本文链接:https://blog.csdn.net/solaraceboy/article/details/102729793 C语言中宏的定义与使用 三种类型的预处理指令 宏定义 宏是比较常用的一种预处理指令...,这里我们主要讨论带参数的宏。...带参数的宏(函数式宏)定义如下: #define EXAMPLE(x,y,z) 替换列表 注意:在宏的名字和左括号之间没有空格。 宏的优点: 程序可能会更快一些; 宏更同意。...宏的缺点: 编译后代码通常会变大。 宏的参数没有类型检查。 无法用指针来指向一个宏。 宏可能会不止一次地计算它的参数。
绝大多数情况下,“宏”这个词的使用暗示着将小命令或动作转化为一系列指令。 宏的用途在于自动化频繁使用的序列或者是获得一种更强大的抽象能力——但这常常是一回事。...计算机语言如C语言或汇编语言有简单的宏系统,由编译器或汇编器的预处理器实现。C语言的宏预处理器的工作只是简单的文本搜索和替换,使用附加的文本处理语言如M4,C 程序员可以获得更精巧的宏。...一个 C 宏可以定义一段语法的替换,然而一个 Lisp 的宏却可以控制一节代码的计算。 获得了控制代码的执行顺序(见惰性计算和非限制函数)的能力,使得新创建的语法结构与语言内建的语法结构不可区分。...当使用一种不熟悉的宏语言来编程时,比较有效的方法就是记录一连串用户希望得到的操作,然后通过阅读应用程序记录下来的宏文件来理解宏命令的结构组成。...== 宏语言 == 宏语言是一类编程语言,其全部或多数计算是由扩展宏完成的。宏语言并未在通用编程中广泛使用,但在文本处理程序中应用普遍。
跟着肯哥(不是我)学C语言的变量和常量、跨文件访问、栈空间 栈空间还不清楚,期待明天的课程内容 C变量 变量(Variable)是用于存储和表示数据值的名称。...主要包括四个环节:定义、初始化、声明、使用 在我刚学C语言的时候,看的网课就专门强调了定义、声明和初始化。 在看这次学习营内容的时候,我对这些内容也已经很模糊了。...变量名(Variable Name)是给变量起名称,用于在程序引用该变量:由字母、数字、下划线组成,首字符不能是数字,不能与C语言内置关键字重名。...常量使用 常量使用方法有两种:直接使用、定义后使用 无需定义,直接使用: int a = 1; int b = 2; int c; c = a + b + 10; // 这个10其实就是一个常量...但不清楚怎么共享变量。虽然了解过extern,但感觉这样耦合度太高,很容易出问题。
不变的值,C语言中用常量的概念来表示,变得值C语言中用变量来表示。...5.变量名不能使用关键字。...5.常量 C语言中的常量和变量的定义的形式有所差异。 C语言中的常量分为以下以下几种: 字面常量 const 修饰的常变量 #define 定义的标识符常量 枚举常量 1....[max]={0}; return 0; } 4.枚举常量 枚举常量即可以一一列举的常量,定义枚举类型需要使用枚举关键字enum。...0开始,依次向下递增1的 return 0; } 以上就是对C语言中常量和变量的介绍!
今天分享C语言中的两个宏,这两个宏包含了指针和结构体的知识,非常具有代表性。另外,这个题目曾经是大疆无人机的一道笔试题,可见,这两个宏对C语言基础还是有一定要求的。...,还要知道变量类型,所以C语言帮我们考虑了这一点,使用简单的点的方式就行了。...既然C语言帮我们做了计算偏移量这件事情,那我们是不是可以反过来利用一下它,先通过点的方式访问变量,再对变量进行取地址运算,减去结构体首地址不就是变量的偏移量了吗?...二、container_of 上面介绍了offsetof宏的使用,相信不是那么难理解,那么这个宏就看起来复杂多了,但是,其实只要把思路理清楚了,也不是那么复杂。...这个宏我在VC6.0编译器上编译的时候是会报错的,其中的typeof这个关键字它就不认识,因此没法做实验,但是在gcc编译器上是可以的,估计因为这个原因,使用的会更少一些,但是这没关系,重要的在于我们能够理解它的原理
C语言宏定义技巧(常用宏定义) 写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性等等。下面列举一些成熟软件中常用得宏定义。...= ((word) (val))) #define outpdw(port, val) (*((volatile dword *) (port)) = ((dword) (val))) 19、使用一些宏跟踪调试...如果实现是标准的,则宏_STDC_含有十进制常量1。如果它含有任何其它数,则实现是非标准的。...%d%d”,date,_LINE_,_FILE_) #else #define DEBUGMSG(msg,date) #endif 20、宏定义防止使用是错误 用小括号包含。..."##"的用法 一、一般用法 我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起.
/*开始,由*/结束,但是在c99以后使用“//”的注释方法更加实用,所以不对前者进行介绍。...宏定义的常量常量往往都会具有独特性,比如π的值不会是3.15,我们可以用宏来定义这些常量。对比下面两个函数。...,此时就能使用宏来定义常量,定义的方法为"#define".'...c语言是区分大小写的,也就是说,以下C语言的标识符:OK,Ok,oK,ok都是合法的,而且这四个变量都可以赋予不同的值,但是这样做的缺点也很明显,就是不容易分辨这些变量在程序中做何意义。...2)我们发现程序中的1/2使用的时候写的是1.0/2,这是由于c语言中1是一个整形,当一个整型除以整型的结果也是一个整型,1/2的结果为0.这明显违背了数学中的定义,而1.0是一个浮点型,用浮点型与整型相除计算得出一个浮点型的结果
变量 C中的变量与数学中的变量有些类似,是可以改变的量。那么变量如何定义和使用呢?...char a; int b; float c; double d; unsigned int m; short int n; 1.2 变量的初始化 可以在定义的同时对变量初始化,也可以先定义变量再进行初始化...//在定义时初始化 int a = 0; double = 2.3; //先定义再初始化 char ch; ch = 'A'; float d; d = 3.4; 1.3 变量的使用 scanf("%...常量 不变的量 2.1 字面值常量即字面常量。 3.1415926; 10000; 2.2 const修饰的常变量,本质是变量但不可修改。...const int a = 10; 2.3 #define 定义的标识符常量 #define N 100 2.4 枚举常量 ,枚举里的成员默认从0开始 #include enum color
C语言字符串常量 一.字符串常量的声明 char *p = "hello";//指针直接往上戳 一个字符串常量为什么会给一个指针赋值? ...return 0; } 注意,上面的例子中使用了不同的指针指向同样内容的字符串常量...,输出的结果却一样,这就说明多次使用同样内容的字符串常量,在内存中,都只保存一次该字符串常量。..."hello" + 1); printf( "%c\...2.如果要修改字符串的值,我们只能使用字符数组的形式来存储字符串,可以这样声明:char str[] = "hello";,这样就可以修改了,它两本质上的不同是存储的位置不同。
常量和变量是一种相对的概念,在这里我开始跟大家说说常量和变量的区别。可能前几节的小伙伴们并没有能感受出来,不过有了常量的对比那么将会有很好的理解。 ..@_@|||||.....头昏眼花 常量,就是一些固定的数据,也就是说你把数据装到变量以后就不能改变的数据。...这就是变量,那么常量,顾名思义,就是不能够改变的了。...我们看看我们的常量如何写,看我们以下的代码: 注意:以下代码是错误示范的 #include #include int main(){ const...这就是一个常量的使用方法了,其实还有其他创建一个常量的方法,由于我们是C语言简单说,只介绍一般常用的,并不做深入的研究,教程适用也是面向零基础的小白,所以就不再多做解释了。 持续更新中
在上篇文章里面,我们分析了预处理的一个完整过程,这能够让我们理解一个写好的程序,在生成一个可执行文件,到底发生了什么,对我们在大型工程项目里面有助于对程序的理解;今天我们继续接着上篇文章的基础上,来分享有关c语言里面关于宏定义的用法...在C语言中,“宏”分为两种:无参数 和 有参数(这里有参数先不举例子,下面具体分析的话,读者可以详细看到示例来理解这个)。...下面是宏定义的基本形式: #define 宏名 宏体注意:宏体后面不要加分号“;”,这个在写代码的时候要小心点哦 宏定义的优点和缺点 优点: 1、方便程序的修改: 使用简单宏定义可用宏代替一个在程序中经常使用的常量...,这样在将该常量改变时,不用对整个程序进行修改,只修改宏定义的字符串即可,而且当常量比较长时, 我们可以用较短的有意义的标识符来写程序,这样更方便一些(特别当跨平台的时候,要修改程序一些参数的时候,用宏定义的话...宏定义的用法 1、嵌套宏的使用: #include #define M 10 #define N M int main(void) { printf
简单宏定义 简单的宏定义有如下格式: [#define指令(简单的宏)] #define 标识符替换列表 替换列表是一系列的C语言记号,包括标识符、关键字、数、字符常量、字符串字面量、运算符和标点符号...假如数值常量3.14159在程序中大量出现,它可能会被意外地写成3.1416或3.14195。 虽然简单的宏常用于定义常量名,但是它们还有其他应用。 4) 、可以对C语法做小的修改。...实际上,我们可以通过定义宏的方式给C语言符号添加别名,从而改变C语言的语法。...例如,对于习惯使用Pascal的begin和end(而不是C语言的{和})的程序员,可以定义下面的宏: #define BEGIN { #define END } 我们甚至可以发明自己的语言。...当宏作为常量使用时,C程序员习惯在名字中只使用大写字母。但是并没有如何将用于其他目的的宏大写的统一做法。由于宏(特别是带参数的宏)可能是程序中错误的来源,所以一些程序员更喜欢使用大写字母来引起注意。
但上述的宏具有一个明显的缺点:当遇到 if、while 等语句且不使用花括号仅调用宏时,实际作用范围在宏的第一个分号后便结束。...\n"); printf("var_a = %d, var_b = %d\n", var_a, var_b); // var_a = 2, var_b = 1 return 0; } C 语言规定...4. ({}) 方式 ({}) 为 GNU C 扩展的语法,非 C 语言的原生语法。...({}) 毕竟不是 while 循环,不能直接使用 break退出函数宏是比较容易理解。那支持返回值是什么意思呢? 答案是 C 语言规定 ({}) 中的最后一条语句的结果为该双括号体的返回值。...缺点:不支持提前退出函数宏;非 C 的原生语法,编译器可能不支持。 5.
领取专属 10元无门槛券
手把手带您无忧上云