c - 在 main 函数中使用变量通过 main 外部的 malloc 定义数组的大小?

标签 c arrays pointers malloc

因此,作为初学者,指针是我新宣布的宿敌,但不幸的是,我觉得我必须使用它们来完成这项任务。

用户必须通过一个简单的 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/

相关文章:

c - 关于Linux fork的问题

c++ - 必须在赋值中赋值

c++ - 指针数组的问题

C - 如何通过引用将结构指针数组传递给函数

C++ 访问类成员的操作顺序

c - 从数组中提取 UpperByte 和 LowerByte

c - 在客户端和服务器接收部分动态分配足够的内存

c - MISRA 9.2 初始化 float 和无符号数组

arrays - 在 gfortran 中分配大矩阵时整数溢出

php - 如何将mysql获取的数据再次插入数据库表中