用malloc时候发生错误

来源:百度知道 编辑:UC知道 时间:2024/07/04 21:06:52
这是一个魔方阵的代码,其他都没问题,但是编译的时候错误
error C2440: '=' : cannot convert from 'void *' to 'int *'
指向的地方是
int *matrix;
matrix=malloc(max+max);
请高手帮我看看哪里出问题了,该怎么改

#include "stdafx.h"
#include "stdio.h"
#include "malloc.h"
#include "conio.h"

int array(int n);

void main()
{
int n;
printf("请给n赋值(奇数)\n");
scanf("%d",&n);
printf("\n");
if(n%2==0)
{
n++;
}

array(n);

getch();
}

int array(int n)
{
int i,j,max,num,no;
max=n*n;
int *matrix;
matrix=malloc(max+max);
matrix[n/2]=1;
i=0;
j=n/2;
for(num=2;num<=max;num++)
{
i=i-1;
j=j+1;
if((num-1)%n==0)
{
i=i+2;
j=j-1;
}
if(i<0)
{
i=n-1;
}
if(j>

malloc返回void类型值,所以要在malloc前加强制转换,写成(int *)malloc(......)的形式,括号里的东西按你那样写就行,我就懒得写了。

matrix=malloc(max+max);
改成:matrix=(int *)malloc((max+max)*sizeof(int));

array函数最后还要加上return 1;

如果还不懂给我留言

通过代码:

#include "stdafx.h" //这个其实是可以不用加的
#include "stdio.h"
#include "malloc.h"
#include "conio.h"

int array(int n);

void main()
{
int n;
printf("Çë¸øn¸³Öµ£¨ÆæÊý£©\n");
scanf("%d",&n);
printf("\n");
if(n%2==0)
{
n++;
}

array(n);

getch();
}

int array(int n)
{
int i,j,max,num,no;
max=n*n;
int *matrix;
matrix=(int *)malloc((max+max)*sizeof(int));
matrix[n/2]=1;
i=0;
j=n/2;
for(num=2;num<=max