因此,作为初学者,指针是我新宣布的宿敌,但不幸的是,我觉得我必须使用它们来完成这项任务。
用户必须通过一个简单的 scanf 函数在主函数中定义数组的长度(该函数的存在是为了检查输入值的间隔是否有效):
arraylength = input();
然后,我使用另一个先前声明的数组指针来初始化该数组,并使用数组长度作为参数:
int *array = init_array (arraylength);
int* init_array(int arraylength)
{
int *array = (int*) malloc ((arraylength) * (sizeof (int));
return array;
}
我收到错误消息,并且我知道我正在使用 malloc
错误的方法。
但我很困惑,因为我就是找不到错误。该语法对我来说看起来很正确(我又是初学者)
我认为这要么与我如何以错误的方式使用指针以及 int arraylength
的数据类型有关。和int *array
。
尝试使用数据类型(将它们从指针更改为普通整数,反之亦然)随后会产生更多警告和错误。
我们不得使用任何
const
顺便说一下变量。
每个变量都必须在函数内声明。
最佳答案
如果这是同样的错误,则说明您忘记在 malloc 末尾添加括号
// This
int *array = (int*) malloc ((arraylength) * (sizeof (int)));
// Not this
int *array = (int*) malloc ((arraylength) * (sizeof (int));
此外,您不需要在 malloc 中类型转换 (int*),除非您使用的是 C++,只是没有理由的额外代码,
int *array = malloc ((arraylength) * (sizeof (int)));
这样就好了
关于c - 在 main 函数中使用变量通过 main 外部的 malloc 定义数组的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59994886/