c - #Define VS 变量

标签 c variables c-preprocessor

我无法理解:

#define WIDTH 10 

int width = 10;

使用第一种或第二种有什么好处?

最佳答案

嗯,有很大的不同。你可以改变 width 的值,你可以获取它的地址,你可以询问它的大小等等。使用 WIDTH 时,它会在任何地方被常量 10 替换,因此表达式 ++WIDTH 没有任何意义。另一方面,您可以声明一个包含 WIDTH 项的数组,而您不能声明一个包含 width 项的数组。

总结:WIDTH 的值在编译时已知,无法更改。编译器不会为 WIDTH 分配内存。相反,width 是一个初始值为 10 的变量,其进一步的值在编译时是未知的;变量从编译器获取内存。

关于c - #Define VS 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11079450/

相关文章:

c - 为什么setjmp/longjmp

c - 为什么一次编译两个 c 文件以在终端中构建通用可执行文件不起作用?

php - 将两个 JavaScript 变量传递给 PHP 变量

java - 按钮和 Action 监听器的网格

r - 如何根据R中的两个分类变量创建一个新变量?

c++ - 在 C++ 中使用#undef

c++ - 临时存储#define 宏值并重新使用它

c++ - VS2013忽略杂注警告禁用

C:如何从库访问数据类型

c - 如何比较和替换(int)指针?