C语言中形参的问题(大概)

顾球球循环 2019-06-17 12:36:47
有大佬帮我看下这段代码问题在哪嘛?
a[][]前面有定义有赋值,MN前面有宏定义,main只是调用了几个子函数。

输出是随机数。

需求是,将一个二维数组里符合条件的元素放进指定的位置。

或者 如果要用一个数组做形参,应该怎么弄?
告诉我应该怎么查资料也OK,我查到的不太能解决这个问题orz

int change(int *p,int i,int j,int m,int n)
{
int t;
t = a[i][j];
a[i][j] = a[m][n];
a[m][n] = t;
}

int put()
{
change(a[M][N],0,0,1,2);
change(a[M][N],0,1,2,1);
change(a[M][N],M,N,1,1);
change(a[M][N],2,1,1,0);
change(a[M][N],2,0,0,1);

}
...全文
166 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_40290083 2019-06-17
  • 打赏
  • 举报
回复
补充:仔细看看你的代码,错误很多,而且不知道你要完成功能
weixin_40290083 2019-06-17
  • 打赏
  • 举报
回复
你的change函数是将二维数组的两个位置数进行交换。 change(a[M][N],M,N,1,1)会下标越界,C是不会抛异常,但是会有异常数据到a[1][1],修改A[M][N]的值 可能什么导致系统异常。
顾球球循环 2019-06-17
  • 打赏
  • 举报
回复
引用 5 楼 x309374055 的回复:
如果你用MN来定义数组大小,a[M][N]全部越界了,还有a[M][N]传给change的时候是不是少了个取地址符&?这个函数里p没有用到,把a[M][N]传进去干嘛呢?

已经找到问题了!非常感谢!
顾球球循环 2019-06-17
  • 打赏
  • 举报
回复



引用 4 楼 weixin_40290083 的回复:
按你的change函数的定义,第一个参数int *p,猜测你是想将二维数组传给该该当,当数组做为参数是传递的是指针,调用change函数是第一个参数应当是一个指针,那么正确的调用示例change(a,0,0,1,2);change函数中使用数组时,数组变量名应该为p,而不是a,如果你使用了变量名a,并且不报错的话,那么你的a数组应当是在所有方法外部定义的全局变量,那么参数p就没有意义了。

!非常感谢!完美解决!!我的a确实是声明的全局变量orz
不过指针和数组做形参还是不太能理解,明天我再去翻翻资料。
总之非常感谢!!!
x309374055 2019-06-17
  • 打赏
  • 举报
回复
你是不是想这样写?
int change(int (*p)[N],int i,int j,int m,int n)
{
int t;
t = p[i][j];
p[i][j] = p[m][n];
p[m][n] = t;
}

int put()
{
change(a,0,0,1,2);
change(a,0,1,2,1);
change(a,M-1,N-1,1,1);
change(a,2,1,1,0);
change(a,2,0,0,1);

}
x309374055 2019-06-17
  • 打赏
  • 举报
回复
如果你用MN来定义数组大小,a[M][N]全部越界了,还有a[M][N]传给change的时候是不是少了个取地址符&?这个函数里p没有用到,把a[M][N]传进去干嘛呢?
weixin_40290083 2019-06-17
  • 打赏
  • 举报
回复
按你的change函数的定义,第一个参数int *p,猜测你是想将二维数组传给该该当,当数组做为参数是传递的是指针,调用change函数是第一个参数应当是一个指针,那么正确的调用示例change(a,0,0,1,2);change函数中使用数组时,数组变量名应该为p,而不是a,如果你使用了变量名a,并且不报错的话,那么你的a数组应当是在所有方法外部定义的全局变量,那么参数p就没有意义了。
顾球球循环 2019-06-17
  • 打赏
  • 举报
回复
引用 1 楼 weixin_40290083 的回复:
你的change函数是将二维数组的两个位置数进行交换。
change(a[M][N],M,N,1,1)会下标越界,C是不会抛异常,但是会有异常数据到a[1][1],修改A[M][N]的值 可能什么导致系统异常。

okkkkk谢谢!!解决了TVT 但还有一堆warning不知道是啥orz

可以问一下还有啥错吗_(:з」∠)_

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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