怎样把多维数组作为函数参数

czealot 2005-12-28 04:01:49
想把一个二维数组传递给函数,不用指针,谢谢!
具体的语法:
...全文
150 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
terryukai 2005-12-28
  • 打赏
  • 举报
回复
Thanks for eternall(逍遥)
文章很不错。
JoyerHuang_悦 2005-12-28
  • 打赏
  • 举报
回复
内置没有传递多维数组的功能,这是用struct模拟的方法,
好处是比较安全,缺点是COPY的代价很大,最好在struct
的内部使用指针。


#include <stdio.h>

typedef struct D2ARRAY_tag{
int v[20][20];
} D2ARRAY;
const int D2LEN = 10;
int sum_2d(D2ARRAY in){
int i,j,sum=0;
for(i=0;i<D2LEN;++i)
for(j=0;j<D2LEN;++j)
sum+=in.v[i][j];
return sum;
}

int main(int argc, char **argv){
D2ARRAY tbl={2,3,4};

int i,j;
for(i=0;i<D2LEN;++i)
for(j=0;j<D2LEN;++j)
{tbl.v[i][j]=rand()%2;printf("%d ",tbl.v[i][j]);}

printf("\n%d\n",sum_2d(tbl));
system("pause");
return 0;

}
eternall 2005-12-28
  • 打赏
  • 举报
回复
http://tech.163.com/05/0321/11/1FC57DJF00091589.html
ox_thedarkness 2005-12-28
  • 打赏
  • 举报
回复
好嘛,那么用模版+引用
---------------------------------------------------
#include <iostream.h>

template <class Array>
void func( Array& a ){
a[0][0] = 25;
}

int main(){
int ar[10][10];
func( ar );
cout<<ar[0][0]<<endl;

return 0;
}
---------------------------------------------------
Ninstein 2005-12-28
  • 打赏
  • 举报
回复
好锋利的矛
好坚硬的盾
dragonzxh 2005-12-28
  • 打赏
  • 举报
回复
楼上的,人家说的是把一个二维数组“传递”给函数......
ox_thedarkness 2005-12-28
  • 打赏
  • 举报
回复
那就定义成全局变量把... 哈... - -b寒一个

---------------------------------------------------
namespace {
int ar[10][10];
};
void func(){
ar[0][0] = 10;
}
int main(){
func();
cout<<ar[0][0]<<endl;
}
---------------------------------------------------

那个匿名的namespace表示其中内容都是内部连接, 不会影响到其他文件

( 不过奉劝楼主还是去学指针把... )
dragonzxh 2005-12-28
  • 打赏
  • 举报
回复
8会。8用指针用什么?

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧