| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 361 人关注过本帖
标题:二维数组指针问题 求解
只看楼主 加入收藏
终止节奏
Rank: 1
来 自:内蒙古
等 级:新手上路
帖 子:12
专家分:0
注 册:2014-11-18
结帖率:100%
收藏
已结贴  问题点数:5 回复次数:3 
二维数组指针问题 求解
#include <iostream>
using namespace std;
int main()
{
    int a[5][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}},i,j,max;
    int *p;
    p=&a[0][0];
    max=*p;
    for(i=0;i<=4;i++)
    {
        for(j=0;j<=4;j++)
        {
            if(*(*(p+i)+j)>max)
            {
                max=*(*(p+i)+j);
            }
        }
    }
    cout<<"max="<<max<<endl;
    return 0;
}




VC下面显示这个错误:error C2100: illegal indirection

哪里不正确 求解
搜索更多相关主题的帖子: return include 
2015-03-23 20:34
终止节奏
Rank: 1
来 自:内蒙古
等 级:新手上路
帖 子:12
专家分:0
注 册:2014-11-18
收藏
得分:0 
求最大值的一道题
2015-03-23 20:35
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:5 
if判断的时候*用多了。另外,如果单纯地用(p+i)+j取地址的话,由于i,j的最大值都只能是4,所以无论怎么循环下去,最末一个地址只能是p+8,要想循环到最后一项a[4][4],循环条件改成if(*((p+i)+j*5)>max),如下代码可行,已测试。
#include <iostream>
using namespace std;
int main()
{
    int a[5][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15},{16,17,18,19,20},{21,22,23,24,25}},i,j,max;
    int *p;
    p=&a[0][0];
    max=*p;
    for(i=0;i<=4;i++)
    {
        for(j=0;j<=4;j++)
        {
            if(*((p+i)+j*5)>max)//这行和下一行作一下改动
            {
                max=*((p+i)+j*5);
            }
        }
    }
    cout<<"max="<<max<<endl;
    return 0;
}
2015-03-23 21:25
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:0 
声明一下,以上代码所测试地址不是顺序进行的,有点乱。顺序是p, p+5, p+10... p+20, p+1, p+6, p+11...
或者说检测顺序是a[0][0],a[0][1],a[0][2]...a[1][0],a[1][1],1[1][3]...
2015-03-23 21:31
快速回复:二维数组指针问题 求解
数据加载中...
 
   



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

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