当我尝试运行以下代码时,出现此错误:
'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;
}
答案 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 );