【发布时间】:2021-05-16 21:29:19
【问题描述】:
这是我编写的 C 编程代码。当我运行此代码时,它显示调试错误,可视代码也显示此警告。
Warning 6385 Reading invalid data from 'my_newarray': the readable size is '4' bytes, but '8' bytes may be read.
我的代码是:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int n;
printf("enter the size of an array: ");
scanf_s("%i", &n);
int my_array[] = { calloc((n + 1), sizeof(int)) };
int my_newarray[] = { calloc((n + 1), sizeof(int)) };
printf("enter only 0s and 1s n times:\n");
for (int i = 0; i < n; i++)
{
scanf_s("%i", &my_array);
}
for (int j = 0; j < n; j++)
{
if (my_array[j] > my_array[j + 1])
{
my_array[j] = my_newarray[j + 1];
}
}
for (int k = 0; k < (n+1); k++)
{
printf("%i\n", my_newarray[k]);
}
free(my_array);
free(my_newarray);
}
【问题讨论】:
-
哎哟!语法,语法,语法...
int *my_array = calloc((n + 1), sizeof(int));,您不能将地址分配给 Array,您必须使用 Pointer,没有{...}(大括号初始值设定项语法)需要。 (my_newarray也一样) -
也总是 Validate 每个输入,例如
if (scanf_s("%i", &n) != 1) { /* handle error */ return 1; }
标签: c for-loop scanf dynamic-memory-allocation calloc