【发布时间】:2020-09-26 07:45:34
【问题描述】:
我正在学习 C 语言中的 malloc、calloc、free 和 realloc,但我不知道什么时候应该使用这些函数。
例如:如果我想在 C 中创建一个创建数组的程序,并且它的大小由用户输入确定:
int n;
printf("Enter THe Number of element in Array:..\n");
scanf("%d",&n);
int x[n];
for(int i = 0 ; i < n ; i++)
{
x[i] = i+ 1;
}
for(int y = 0 ; y < n ; y++)
{
printf("%d\n",x[y]);
}
输出:
Enter THe Number of element in Array:..
5
1
2
3
4
5
所以我在这里创建了这个程序,没有使用动态内存分配,这让事情变得更复杂。
【问题讨论】:
-
只有在运行时才知道内存块的大小时,您应该使用动态内存分配(通常,因为它取决于用户输入,这可能因一次执行而异)。
-
您的
int x[n]示例称为VLA(可变长度数组),C 的原始标准(以及C++ 的每个标准)都不支持它。 -
@goodvibration,我不明白你的意思。
-
哪一部分?....
-
@goodvibration 例如 C++。帕斯卡和 ADA 呢?