鱼C论坛

 找回密码
 立即注册
查看: 3629|回复: 12

二维数组调用问题

[复制链接]
发表于 2013-6-29 23:20:09 | 显示全部楼层 |阅读模式
13鱼币
# include <stdio.h>
main()
{
int max(int a[][]);
int a[2][3]={3,1,7,0,8,5};
int z;
z=max(a[2][3]);
printf("%d",z);
}
int max(int a[][])
{
    int z;
int i;
int j;
for(i=0;i<2;i++)
{
  for(j=1;j<3;j++)
  {
  if(a[i][j]>a[i][j-1])
  {
   z=a[i][j];
  }
  }
}
return z;
}

D:\VC++\MSDev98\MyProjects\d\..c(4) : error C2087: '<Unknown>' : missing subscript
D:\VC++\MSDev98\MyProjects\d\..c(7) : warning C4047: 'function' : 'int (*)[1]' differs in levels of indirection from 'int '
D:\VC++\MSDev98\MyProjects\d\..c(7) : warning C4024: 'max' : different types for formal and actual parameter 1
D:\VC++\MSDev98\MyProjects\d\..c(10) : error C2087: '<Unknown>' : missing subscript

学艺不精
一直都不知道二维数组怎么调用= =...

最佳答案

查看完整内容

就是以你这个程序来说 声明应该是int max(int [][3]); //这后面括号里的3是不能省的 定义时是int max(int b[][3]); 调用时则是z=max(a);  //a就是你的二维数组名
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-6-29 23:20:10 | 显示全部楼层
本帖最后由 只爱你一人 于 2013-6-30 12:59 编辑

就是以你这个程序来说
声明应该是int max(int [][3]);   //这后面括号里的3是不能省的
定义时是int max(int b[][3]);
调用时则是z=max(a);  //a就是你的二维数组名
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-6-30 00:11:51 | 显示全部楼层
z=max(a[2][3]);
这一行,传入的参数应该是二维数组的首地址,即:
z = max(a);就好 了。
你原来的做法是把a[2][3]的值传进去,但实际上也并不存在a[2][3]这个值。最大就是a[1][2];
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-6-30 10:43:06 | 显示全部楼层
觉得你的函数声明和函数定义是否应该放在主函数main()的外面。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-6-30 10:54:38 | 显示全部楼层

还是不行...
C:\Windows\System32\k.c(4) : error C2087: '<Unknown>' : missing subscript
C:\Windows\System32\k.c(7) : warning C4048: different array subscripts : 'int (*)[1]' and 'int [2][3]'
C:\Windows\System32\k.c(7) : warning C4024: 'max' : different types for formal and actual parameter 1
C:\Windows\System32\k.c(10) : error C2087: '<Unknown>' : missing subscript
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-6-30 11:42:11 | 显示全部楼层
二维数组第二个参数不能省略吧。。。。。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-6-30 11:50:10 | 显示全部楼层
Skyline 发表于 2013-6-30 11:42
二维数组第二个参数不能省略吧。。。。。。。。。。

何解 哪个是第二个参数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-6-30 15:38:47 | 显示全部楼层
最简单就是int max( int **a );
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-6-30 17:12:12 | 显示全部楼层
#include "stdio.h"
int max(int a[2][3])
{
int z;
int i;
int j;
for(i=0;i<2;i++)
{
  for(j=1;j<3;j++)
  {
  if(a[i][j]>a[i][j-1]) z=a[i][j];
  }
}
return z;
}   
void main()
{
int a[2][3]={3,1,7,0,8,5};
int z;
z=max(a);
printf("%d",z);
}
这样就可以了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-6-30 17:16:09 | 显示全部楼层
你把自定义函数的max(a[][])里面的a[][]形参不能省略,:lol要写成a[2][3]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-7-1 08:15:03 | 显示全部楼层
1.你要给你的MAIN函数加上返回值
2.数组参数二维不能省略
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-7-1 12:26:18 | 显示全部楼层
把两个int max(a【】【】)改成int max(a【】【3】)
z=max(a【2】【3】)改成z=max(a);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-7-4 00:18:59 | 显示全部楼层
学习学习{:7_155:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-24 04:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表