#define 简直就象是指针麻

来源:百度知道 编辑:UC知道 时间:2024/05/30 00:24:08
在开始定义东西的时候,就是把后面后面的数字替换到前面的字母上来
比如:

#define TR 169350

以后用printf输出TR的话,就是输出169350

有这个的话,是不是相当于指针指向的功能?
那它和全局变量有什么关系

C/C++里的指针一般是一个存储内存地址的变量,利用这个变量可以操纵它指向的内存地址。而#define TR 169350 只是定义了一个宏,在程序的预编译阶段,编译器会把程序中所有出现TR的地方都替换成169350,然后再进行编译的。这是两个不同的概念。
全局变量是在整个程序的生命周期中都有效的变量,但它也只是个变量。而宏的机制如上所述,跟变量不是一回事的。

#define 就是定义了一个常量,在程序中不会改变的

...不能这么认为

指针还要分配内存空间呢

这个呢 什么都不要 只要碰到 相应的标识符就换
而且执行速度非常之快
但是扩展后会增加代码的长度

预编译 实际上就是一个字符串替换过程

#define TR 169350
其实就是在源代码中 把 前面的内容 替换为 后面的内容
并不是什么指针 和指针不相同的
全局变量 是在源代码中都可以访问的变量 就是都可以使用这个变量的
如果是局部变量 只能在声明的函数内可以使用

预编译指令定义出来的东西,并不是真实存在的。
在编译程序的时候,编译器会将#define定义出来的东西替换为定义值。
全局变量是真实的存在于程序中的,但也不过是一个变量而已。
两者没有关系。