#include <stdio.h>
#include <stdlib.h>
void test02()
{
int *p2 = (int *)malloc(10 * sizeof(int)); // 分配包含 10 个 int 元素的内存空间
if (p2 == NULL)
{
printf("malloc error\n");
return;
}
int n = 10; // 数组的大小为 10
printf("请输入%d个int数值:", n);
for (int i = 0; i < n; i++)
{
scanf("%d", p2 + i); // 输入数组的元素值
}
printf("数组的元素为:");
for (int i = 0; i < n; i++)
{
printf("%d ", *(p2 + i)); // 打印数组的元素值
}
printf("\n");
free(p2); // 释放内存空间
}
int main(int argc, char const *argv[])
{
test02();
return 0;
}
我们首先使用 `malloc` 分配了包含 10 个 `int` 元素的内存空间,即 `10 * sizeof(int)`。我们将返回的指针强制类型转换为 `int` 类型的指针,并将其赋给 `p2`。
然后,我们检查了 `p2` 是否为 `NULL`,如果为 `NULL`,说明内存分配失败,我们打印错误信息并返回。
接下来,我们使用 `scanf` 函数从用户输入中读取数组的元素,并将其存储在动态分配的数组中。
最后,我们遍历数组并打印每个元素。注意,我们使用 `*(p2 + i)` 来访问数组的元素,这是指针算术的一种形式。
最后,我们在程序结束后调用 `free` 函数来释放动态分配的内存空间。
现在,你可以运行修正后的代码,并输入 10 个整数值来测试它。它将分配一个包含 10 个整数的数组,并将输入的值打印出来。