#include <stdio.h>
#include <stdlib.h>
int main() {
int size;
printf("请输入数组大小: ");
scanf("%d", &size);
int *arr = (int *)malloc(size * sizeof(int));
if (arr == NULL) {
printf("内存分配失败\n");
return 1;
}
// 使用数组
for (int i = 0; i < size; i++) {
arr[i] = i;
}
// 输出数组
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
free(arr);
return 0;
}
动态内存分配函数选择依据
- malloc:
malloc
函数用于分配指定字节数的内存空间。它不初始化分配的内存,返回的指针指向分配内存的起始地址。在本题中,因为用户输入数组大小,我们只需要一块指定大小的连续内存来存放整数,不需要对内存进行初始化,所以选择malloc
。
- calloc:
calloc
函数也用于分配内存,但它会将分配的内存初始化为零。如果我们需要分配的数组在使用前需要全部初始化为零,那么可以选择calloc
。例如,若数组用于计数等用途,初始化为零是有必要的。但本题中没有这样的需求,所以malloc
更合适。
- realloc:
realloc
用于改变已分配内存块的大小。如果我们在程序运行过程中需要动态调整数组大小,就可以使用realloc
。本题仅要求根据用户输入创建数组,不涉及动态调整大小,因此不需要使用realloc
。