"int" 类型的实参与 "int *" 类型的形参不兼容。求解答。

sinat_20942561 2015-08-25 11:14:52
#include "stdafx.h"
#include <iostream>
using namespace std;
static const int X=5;
static const int Y=5;
struct FreeSlab //定义一个结构体
{
int slabINDEX;
int slabCORX;
int slabCORY;
};
FreeSlab search(int sz[X][Y],int index[X][Y],int unindex[X][Y]) //定义一个返回结构体的函数
{
int M=9999;
int CORX=0;
int CORY=0;
FreeSlab slab1;
for(int j=0;j<Y;j++)
{
for(int i=0;i<X;i++)
{
if(M>sz[i][j] && sz[i][j]!=0 && index[i][j]!=0 && unindex[i][j]!=0 )
{
M=sz[i][j];
CORX=i;
CORY=j;
}else{//do nothing
M=M;
CORX=CORX;
CORY=CORY;
}
}
}
slab1.slabINDEX=M;
slab1.slabCORX=CORX;
slab1.slabCORY=CORY;
return slab1;
}

int main()
{
int freeslab[X][Y];
for(int i=0;i<X;i++)
{
for(int j=0;j<Y;j++)
{
freeslab[i][j]=-1;
}
}

int unfreeslab[X][Y];
for(int i=0;i<X;i++)
{
for(int j=0;j<Y;j++)
{
unfreeslab[i][j]=-1;
}
}

int slabyard[X][Y]={
{0, 0, 0, 1, 0},
{5, 0, 0, 1, 1},
{7, 0, 1, 9, 7},
{8, 1, 12, 9, 6},
{6, 6, 13, 6, 4}
};

FreeSlab uncertainslab;
uncertainslab=search(slabyard[X][Y],freeslab[X][Y],unfreeslab[X][Y]);
//我想定义一个结构体 然后用函数返回的结构体来初始化我定义的新结构体(不知是否正确?),但是这里search函数出现错误:"int" 类型的实参与 "int *" 类型的形参不兼容,就是slabyard[X][Y],freeslab[X][Y],unfreeslab[X][Y]这三个。
return 0;
}
...全文
1369 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
全体成员 2015-09-01
  • 打赏
  • 举报
回复
不是想初始化结构体吗。这样只需要FreeSlab free;或者FreeSlab free = new FreeSlab;就是已经初始化好的了。
赵4老师 2015-08-25
  • 打赏
  • 举报
回复
思考一下为什么不将整个互联网内容当作函数参数传来传去呢?
www_adintr_com 2015-08-25
  • 打赏
  • 举报
回复
uncertainslab=search(slabyard,freeslab,unfreeslab);
jiqiang01234 2015-08-25
  • 打赏
  • 举报
回复
用结构体包装二维数组,函数参数直接改为结构体指针
sinat_20942561 2015-08-25
  • 打赏
  • 举报
回复
引用 5 楼 gss861225 的回复:
直接在结构体里价格构造函数。 struct FreeSlab //定义一个结构体 { int slabINDEX; int slabCORX; int slabCORY; FreeSlab() { memset(this, 0, sizeof(FreeSlab)); } };
为什么要定义这个构造函数?
sinat_20942561 2015-08-25
  • 打赏
  • 举报
回复
谢谢上面各位的解答!由衷的感谢!
sinat_20942561 2015-08-25
  • 打赏
  • 举报
回复
引用 1 楼 adlay 的回复:
uncertainslab=search(slabyard,freeslab,unfreeslab);
谢谢 解决了问题. 另外我想问下:我函数定义时形参是数组形式,为什么调用时一定要用数组名呢,用slabyard[][Y]不可以嚒?
全体成员 2015-08-25
  • 打赏
  • 举报
回复
直接在结构体里价格构造函数。 struct FreeSlab //定义一个结构体 { int slabINDEX; int slabCORX; int slabCORY; FreeSlab() { memset(this, 0, sizeof(FreeSlab)); } };
二班的码农 2015-08-25
  • 打赏
  • 举报
回复
slabyard[X][Y],在定义时,表示x行y列,在访问时,表示第X行第Y个元素 你的函数调用有两个问题,其一第X行第Y个元素已经越界,其二,不能将数组的一个元素(即程序中为整型)来初始化一个数组 数组传递方式,如果用非 指针型,只需要将数组名(即数组的地址)传给形参,另外形参的最后一维长度(即Y)是没有意义的,数组在函数调用传递时,已经退化成一个指针了,在形参中定义int sz[x][y] 和定义 int sz[x][]是一样的

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧