printf("Enter number of elements\n");
scanf("%d",&n);
int num[sizeof(int)*n];
这是动态分配数组大小的正确方法吗?
非正式术语动态分配几乎肯定是指正式术语分配存储,意味着从malloc
/ calloc
/ realloc
返回的堆内存。
当然,还有其他“动态的东西”,比如一个动态增长和下沉的堆栈,但我们不会调用堆栈分配动态分配。
因此,如果没有malloc
/ calloc
/ realloc
,就不可能进行动态分配。
您的示例中包含的是可变长度数组(VLA)。它们在运行时分配,通常在堆栈上。你错误地使用它。你应该
n
是在1到max的特定范围内的有效值。int num[n];
分配VLA。