www.ylrr.net > C语言中,宏替换与定义全局变量的区别是什么?

C语言中,宏替换与定义全局变量的区别是什么?

1 作用时间不同.宏定义在编译期间即会使用并替换,而全局变量要到运行时才可以.2 本质类型不同.宏定义的只是一段字符,在编译的时候被替换到引用的位置.在运行中是没有宏定义的概念的.而变量在运行时要为其分配内存.3 宏定义不可以被赋值,即其值一旦定义不可修改,而变量在运行过程中可以被修改.4 宏定义只有在定义所在文件,或引用所在文件的其它文件中使用. 而全局变量可以在工程所有文件中使用,只要再使用前加一个声明就可以了.换句话说,宏定义不支持extern.

宏定义是编译时替换,全局变量是运行时引用.旁边机器人回答得就是个水货.

宏在预处理时展开全局变量是作为一个变量,一直占用着地址

C当中是没有常变量的,也就是定义的变量赋值了常数但是仍然可以改变值;C++里边才有常变量,定义同时初始化,以后就不能改变值了.C中的宏定义就是一种替换,代码上的复制替换,可以这样理解,define A 12345就是凡是A出现的地方都用12345替换,当然宏替换就不止数值,还可以到字符串、函数表达式上去.替换的部分是预定义,经过编译后才会替换掉,并且对A是没有分配存储空间的,其实也没必要,都全部替换了.

没有联系,至于区别,也就谈不上 宏定义是在编译阶段进行宏替换,说白了就是个记号,而这些记号对应着需要替换的代码,就是个方便编程的工具,没有也行.当然宏定义涉及变量,常量,语句,功能强大,不必多说.而变量嘛,就是在内存或者寄存器里面,保存数据的容器,再详细一点,就是某个实际存在的数据的符号地址,也就说,变量名的实际上是一些地址,为了便于编程才会有“名字”的.当然也不是说,变量名是指针,指针也是一种变量.所以,毫无关系.

全局变量是 指在整个程序中 ,任何位置都能访问它的变量.定义方式与局部变量基本一样,最大区别是定义的位置不一样.如int g_int;main(){..}对于工程中的其他文件,想访问这个全局变量可以用extern int g_int ;声明这样就可以用了

根据使用范围来区分的.1.局部变量 他是 指在函数内部定义的变量 作用域为定义局部变量的函数 也就是说他只能在定义他的函数中使用 最值得注意的是 只有在程序执行到定义他的模块时才能生成,一旦执行退出该模块则起变量消失 eg.func

它们本质是一样的,都是将 #define 之后的内容用另一段内容替代而已,唯一的区别就是宏常量通常是数字,而宏替换可以变得很复杂.这个就好像一个函数,f(x)=x,这样写的话很简单,但是 x 也可以是很复杂的东西,例如 f(x^3)=x^3,这两个函数都是 f,唯一的区别就是自变量的表示不一样而已.而宏替换也是如此,我们可以给 x 一个很简单的数字,也可以给它一个字符串,也可以给它一个很复杂的表达式,但是最终的效果都是将我们的宏定义替换一下.

没大区别,只不过内联函数是强类型,宏替换是弱类型检查.

全局变量是使用相同的内存块在整个类中存储一个值. 全局变量的存在主要有以下一些原因: 1,使用全局变量会占用更多的内存(因为其生命期长),不过在计算机配置很高的今天,这个不成为什么问题,除非使用的是巨大对象的全局变量,

网站地图

All rights reserved Powered by www.ylrr.net

copyright ©right 2010-2021。
www.ylrr.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com