24小时热门版块排行榜    

查看: 386  |  回复: 2

zyj8119

木虫 (著名写手)


[交流] 【求助】单*和双*的区别?【已完结】

以下程序的功能是:对于给定的二维数组a,找出该数组每行元素的最大值,按对应的顺序存入一维数组b中,即数组a第0行的最大值存入b[0]中,第1行的最大值存入b[1],...,最后输出数组a和b。程序正确的运行结果为:
1   2    3   4   5
6   7    8   9   10
11 12 13 14  15
各行的最大值为:
5     10    15
源程序:
CODE:
#include

void fun(int (*p)[5],int *s)
{    int *s1=s;
     for(int i=0;i<3;i++){
                 *s1=**(p+i);//此处为什么要加两个*?
                 for(int j=0;j<5;j++)
                         if(*(*p+j)>*s1)
                                 *s1=(*(p+i))[j];//此处为什么要加两个小括号?
                         s1++;
         }
}

void print(int *p,int n)
{    for(int i=0;i              cout<<*(p+i)<<'\t';
                 if((i+1)%5==0) cout< }
}

void main()
{    int a[3][5]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15},b[3];
     fun( a,b);
         print(*a,15);
         cout<<"\n各行最大值为:"<          print(b,3);
}

[ Last edited by nono2009 on 2010-11-17 at 09:45 ]
回复此楼

» 猜你喜欢

» 抢金币啦!回帖就可以得到:

查看全部散金贴

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

青涩草

铜虫 (小有名气)


zyj8119(金币+10):谢谢帮助!!! 2010-11-12 12:02:12
*s1=**(p+i);//这里s1你定义的是指针变量,相当于是选择法排序,让s1记住a数组的值。在指针变量前加上*表示取出这个地址内的值,也就是把*p里的值拿出来传到s1那块内存去。*s1=(*(p+i))[j];//这儿整个表示的是a数组里面的值,去掉外围的小括号的话就变成了指针,然而它们是值传递。   这是我的一点小观点,不知能不能帮到你。
2楼2010-11-12 09:14:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zyj8119

木虫 (著名写手)


引用回帖:
Originally posted by 青涩草 at 2010-11-12 09:14:30:
*s1=**(p+i);//这里s1你定义的是指针变量,相当于是选择法排序,让s1记住a数组的值。在指针变量前加上*表示取出这个地址内的值,也就是把*p里的值拿出来传到s1那块内存去。*s1=(*(p+i))[j];//这儿整个表示的是a数 ...

此贴结贴。。
3楼2010-11-12 12:03:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zyj8119 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见