例如
之间有什么区别#define LIMIT 100
和
int LIMIT= 100;
如果没有,是否有任何使用方案可以使用但另一方可以?
答案 0 :(得分:1)
#define LIMIT 100
将LIMIT
定义为整数常量,而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
标签等。