“初始化”:无法从“void *”转换为“int*”

时间:2021-02-01 21:04:42

标签: arrays c function

当我尝试运行以下代码时,出现此错误:

'initializing': cannot convert from 'void *' to 'int *' 

我想从函数中返回一个从 1 到 10 的随机数字数组,但我不知道该怎么做,你能帮我吗? IDE 下划线为“malloc”。

#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <math.h>
#include <conio.h>
#include <time.h>

int* casuali(int n);

int main()
{
    int n = 10;

    int* arrCasuali = casuali(n);

    for (int i = 0; i < n; i++)
    {
        printf("%d", arrCasuali[i]);
    }
}

int* casuali(int n)
{
    int* arrCasuali = malloc(sizeof(int) * n);
    srand(time(NULL));

    for (int i = 0; i < n; i++)
    {
        arrCasuali[i] = rand() % 10 + 1;
    }

    return arrCasuali;
}

1 个答案:

答案 0 :(得分:2)

您正在将程序编译为 C++ 程序。要使程序编译,要么将其编译为 C 程序,要么至少更改此声明

int* arrCasuali = malloc(sizeof(int) * n);

以下内容

int* arrCasuali = ( int * )malloc(sizeof(int) * n);

注意这些header中的那个

#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <math.h>
#include <conio.h>
#include <time.h>

你只需要三个标题

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

或者如果您将程序编译为 C++ 程序,则

#include <cstdio>
#include <cstdlib>
#include <ctime>

和这两个标题

#include <memory.h>
#include <conio.h>

不是标准的 C 头文件。

你应该释放分配的内存

free(  arrCasuali );
相关问题