| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 663 人关注过本帖
标题:c程序运行出错,为什么?
只看楼主 加入收藏
栀子花开
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-2-23
收藏
 问题点数:0 回复次数:7 
c程序运行出错,为什么?

// 求2维数组中最大的数字,编译没有问题,但是运行时出现错误,请高手指点。
#include <stdio.h>


int max1(int **array,int m,int n)
{
int i,j,max11;

max11=array[0][0];

for (i=0;i<m ;i++ )
{
for (j=0;j<n ;j++ )
{
if (array[i][j]>max11)
{
max11=array[i][j];
}
}
}
return(max11);
}

int main()
{


int a[3][4]={{2,3,4,5},{6,3,2,1},{9,3,0,6}};
int b;

b = max1((int **)a,3,4);

printf("the max value is: %d",b);

return 0;
}

搜索更多相关主题的帖子: int array 运行 数字 
2006-02-23 16:53
cordier
Rank: 2
等 级:论坛游民
威 望:1
帖 子:449
专家分:14
注 册:2006-2-9
收藏
得分:0 
以下是我的个人看法。不知道对不
#include <stdio.h>
int max1(int **array,int m,int n) /*改为 int max1(int array[][4],int m,int n) 就可以了*/
{
int i,j,max11;

max11=array[0][0];

for (i=0;i<m ;i++ )
{
for (j=0;j<n ;j++ )
{
if (array[i][j]>max11)
{
max11=array[i][j];
}
}
}
return(max11);
}

int main()
{
int a[3][4]={{2,3,4,5},{6,3,2,1},{9,3,0,6}};
int b;

b = max1((int **)a,3,4);

printf("the max value is: %d",b);

return 0;
}

因为是二维数组,所以在传递的过程中,要知道它的每一维有多少个变量,而不在乎它有多少维。
你用**array,好像体现不出来。
我觉得最好先将二维转化为一维,再通过函数查找比较好。
因为你也看到我修改的那一个东东,也要知道每一维有多少个变量,如果不知道,那我也没有办法了。
高手们有招的话,一定要说出来。
不要保留
多多交流


2006-02-23 17:31
amzyb
Rank: 1
等 级:新手上路
帖 子:76
专家分:0
注 册:2005-1-10
收藏
得分:0 
我对指针不太了解,也稍微改了一下,可以了,贴出来大家看看!
#include <stdio.h>
int max1(int array[3][4],int m,int n)~~~~~~~~~~
{
int i,j,max11;
max11=array[0][0];
for (i=0;i<m ;i++ )
{
for (j=0;j<n ;j++ )
{
if (array[i][j]>max11)
{
max11=array[i][j];
}
}
}
return(max11);
}
int main()
{
int a[3][4]={{2,3,4,5},{6,3,2,1},{9,3,0,6}};
int b;
b = max1(a,3,4);~~~~~~~~~~~~~
printf("the max value is: %d",b);
return 0;
}
2006-02-23 19:39
栀子花开
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-2-23
收藏
得分:0 
谢谢大家的意见!
但是,我有点糊涂,不是传递地址进去就可以吗?

2006-02-24 09:25
中轴线
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2006-2-25
收藏
得分:0 

#include <stdio.h>


int max1(int array[3][4],int m,int n)//*array[3][4]为与a[3][4]对应的变量*//
{
int i,j,max11;

max11=array[0][0];

for (i=0;i<m ;i++ )
{
for (j=0;j<n ;j++ )
{
if (array[i][j]>max11)
{
max11=array[i][j];
}
}
}
return(max11);
}

int main()
{


int a[3][4]={{2,3,4,5},{6,3,2,1},{9,3,0,6}};
int b;

b = max1(a,3,4);//*a代表数组a[3][4]的首地址*//

printf("the max value is: %d",b);

return 0;
}

这样变了之后你再试一试!


2006-02-25 17:04
中轴线
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2006-2-25
收藏
得分:0 
这样就把数组a[3][4]的首地址传给了array[3][4]

2006-02-25 17:06
中轴线
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2006-2-25
收藏
得分:0 

呵呵,不好意思,我刚才才看到原来3楼的那为仁兄已经贴出来了


2006-02-25 17:09
栀子花开
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2006-2-23
收藏
得分:0 

呵呵,还是要谢谢楼上的朋友。


2006-02-27 14:22
快速回复:c程序运行出错,为什么?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021037 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved