| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1860 人关注过本帖
标题:[讨论]二维指针和数组做参数的问题
只看楼主 加入收藏
梅子
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-5-9
收藏
 问题点数:0 回复次数:3 
[讨论]二维指针和数组做参数的问题

double sum(double **sum)
{
double result=0.0;
int k,l;

for(k=0;k<N;k++)
for(l=0;l<M;l++)
{
result+=sum[k][l]>0?sum[k][l]:(-sum[k][l]);
}

return result;
}

double subsum(double **sub1,double **sub2)
{
double subresult=0.0;
int m,n;

for(m=0;m<N;m++)
for(n=0;n<M;n++)
{
subresult+=(sub1[m][n]-sub2[m][n])>0?(sub1[m][n]-sub2[m][n]):(sub2[m][n]-sub1[m][n]);
}

return subresult;
}

void main()
{
...................
error = subsum(us,vx)/sum(us);\\us,vx,vs,vy是定义的动态数组
error1 = subsum(vs,vy)/sum(vs);
error = error +error1;
..........................................
}

这个程序运行时老是有错误,实在搞不懂,请教高手给讲解一下关于二维动态数组的问题,以及二维指针和二维数组做参数传递的问题.
上面这个程序如果改怎么改呢??

这是提示的错误信息:

:\我的文档\program\lattice boltzmann code\正确程序(动态数组).cpp(493) : error C2664: 'subsum' : cannot convert parameter 1 from 'double *' to 'double [][51]'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
f:\我的文档\program\lattice boltzmann code\正确程序(动态数组).cpp(493) : error C2664: 'sum' : cannot convert parameter 1 from 'double *' to 'double [][51]'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
f:\我的文档\program\lattice boltzmann code\正确程序(动态数组).cpp(494) : error C2664: 'subsum' : cannot convert parameter 1 from 'double *' to 'double [][51]'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
f:\我的文档\program\lattice boltzmann code\正确程序(动态数组).cpp(494) : error C2664: 'sum' : cannot convert parameter 1 from 'double *' to 'double [][51]'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Error executing cl.exe.

正确程序(动态数组).obj - 4 error(s), 0 warning(s)

搜索更多相关主题的帖子: 指针 参数 
2006-05-12 17:04
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 
楼主姐姐,你把完成的代码贴上来,我帮你啊

日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-12 17:29
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
以下是引用梅子在2006-5-12 17:04:00的发言:

void main() /*只有中间啊??*/
{
...................
error = subsum(us,vx)/sum(us);\\us,vx,vs,vy是定义的动态数组
error1 = subsum(vs,vy)/sum(vs);
error = error +error1;
..........................................
}


这个程序运行时老是有错误,实在搞不懂,请教高手给讲解一下关于二维动态数组的问题,以及二维指针和二维数组做参数传递的问题.
上面这个程序如果改怎么改呢??

二维动态数组和一维动态数组都是差不多的,都是连续存储,只要你知道二维是按行存储的就行;
二维指针和二维数组做参数传递,比如void(int a[][column],int range);
又比如void(int **a);
二维指针在函数中尤其要注意它是二维的,其取一维指针比如*(a+i)仍是地址,如果不熟,可以用数组a[i][j]替代
*(*(a+i)+j),这样操作起来会容易些.


对不礼貌的女生收钱......
2006-05-12 17:54
fenghu2004
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2006-5-27
收藏
得分:0 
我也遇到同样的问题,我通过指针数组实现了二维指针与二维矩阵的联系
即,定义*p[],**q,a[][];
q=p;
for(……)
{p[i]=a[i];}
编译后就通过了
2006-05-27 10:39
快速回复:[讨论]二维指针和数组做参数的问题
数据加载中...
 
   



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

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