我必须编写一个编写程序的程序,该程序使用堆来存储数组。我有一个问题,程序在成功运行后会崩溃。我也有一些小的美学问题,元素需要从1开始,并且在最后打印的数字上没有逗号。有人可以帮忙吗?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int size = 0;
int* num_elements;
num_elements = (int*)malloc(sizeof(int) * 3);
printf("How many int elements will you enter?");
scanf("%d", &size);
printf("\n");
for (int k = 0; k < size; k++)
{
printf("Element %d: ", k);
scanf("%d", &num_elements[k]);
}
printf("\n");
printf("The Array stores the following values: \n\n");
for (int j = 0; j < size; j++)
{
printf("%d, ", num_elements[j]);
}
printf("\n");
free(num_elements);
num_elements = 0;
return 0;
}
答案 0 :(得分:1)
如果用户输入的值超过3,您最终将使用超出范围的内存。在您使用动态内存分配时,请充分利用它。询问用户的size
值,然后使用它来调用malloc()
,如
int* num_elements;
printf("How many int elements will you enter?");
scanf("%d", &size);
num_elements = malloc(size * sizeof *num_elements);
然后,要打印1
中的元素编号,您可以像
printf("Element %d: ", k+1);
那就是说,
malloc()
and family in C
.。malloc()
的返回值是否成功。