#include<stdio.h>
#include<stdlib.h>
int main() {
printf("请输入整数:");
int number;
scanf_s("%d", &number);
int* a;
a = (int*)malloc(number * sizeof(int));
for (int i = 0; i < number; i++) {
scanf_s("%d", &a[i]);
}
for (int j=number-1; j >= 0; j--) {
printf("%d ", a[j]);
}
free(a);
return 0;
}
注意:这里使用的动态分配用数组里的个数赋值;用两个重点,使用malloc和使用free
1使用malloc需要包含头文件#include<stdlib.h>,
使用a = (int*)malloc(number * sizeof(int));的效果类似int a[number],但实际不能这么写
这段代码是动态分配内存的malloc函数用于在堆上分配一块指定大小的内存,根据number的值,给它分配了number个int 的空间,并将其起始地址赋给指针变量a
int* a的作用:申请了一个指向整型变量的指针,a被用来指向动态分配整型数组的起始地 址,可以通过a来访问这个动态分配的数组
需要注意的是,malloc
返回的是 void*
类型的指针,因此需要进行类型转换为 int*
类型的指针。
2. 同时,使用完内存后应该及时释放,以免造成内存泄漏。例如,在这段代码执行完相应操作后,应该使用 free(a)
来释放内存空间。