#define与' ='之间的区别是什么?在C?

时间:2017-07-17 10:22:51

标签: c

例如

之间有什么区别
#define LIMIT 100

int LIMIT= 100;

如果没有,是否有任何使用方案可以使用但另一方可以?

2 个答案:

答案 0 :(得分:1)

#define LIMIT 100LIMIT定义为整数常量,而int LIMIT= 100;将其声明为整数变量。

答案 1 :(得分:1)

第一个定义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常量的值,作为case语句的switch标签等。