<分区>
例如
之间有什么区别吗#define LIMIT 100
和
int LIMIT= 100;
如果没有,有没有哪个使用场景可以用一个,另一个不行?
标签 c
<分区>
例如
之间有什么区别吗#define LIMIT 100
和
int LIMIT= 100;
如果没有,有没有哪个使用场景可以用一个,另一个不行?
最佳答案
第一个定义了一个 preprocessor macro在预处理期间,它将在代码中的任何地方被替换为它的值。
#define SIZE 4
int main() {
int matrix_1[SIZE][SIZE] = { 0 };
int* array = malloc(SIZE * sizeof(int));
/* ... */
}
SIZE
的值无法在运行时更改。预处理后,上面的代码将更改为以下内容:
int main() {
int matrix_1[4][4] = { 0 };
int* array = malloc(4 * sizeof(int));
/* ... */
}
第二个初始化一个 int
变量,该变量将分配在堆栈上,您可以在运行时修改它。
int main() {
int size = 4;
size = 12; /* size in now 12 */
int* array = malloc(size * sizeof(int));
/* ... */
}
size
不能用在需要整数常量的上下文中,例如作为位字段的大小,作为 enum
常量的值,作为 switch
语句的 case
标签等。
关于c - C语言中的#define和 '='有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45141691/