怎样传递二维数组?

myblind 2003-01-05 02:15:33

函数头 void showGraph(int **G)
Graph函数,要接受一个二维数组
函数里这样使用 G[1][2]

主函数中有 int t[3][3]
我怎样在主函数中给showGraph传递t数组呢?
...全文
2042 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
aLargeSea 2003-01-14
  • 打赏
  • 举报
回复
Bjarne.Stroustrup说:使用vector来代替底层数组
liu_feng_fly 2003-01-10
  • 打赏
  • 举报
回复
用vector<vector<int> >&
langziji 2003-01-10
  • 打赏
  • 举报
回复
showGraph(t);
这样不可以吗?
ttoth 2003-01-10
  • 打赏
  • 举报
回复
用指向指针的指针吗
combojiang 2003-01-10
  • 打赏
  • 举报
回复
向函数传递数组:
1。数组名作函数参数,传递的是二维数组的首地址。
2。数组元素作函数参数,传递的是数组元素的值。

由于二维数组在内存中是线性排列的,传递一维数组和传递二维数组都是传的地址,所以在被调用的函数中用单循环来遍历二维数组中的所有元素,此时只要传递数组名和元素总个数。要注意被传递的数组地址不要用数组名表示,要用第一个元素的地址表示,因为数组名表示的是二维数组的首地址,尽管地址相同,但操作不同。
myblind 2003-01-10
  • 打赏
  • 举报
回复
如果我不知道它的 维数 怎么办?
sboom 2003-01-08
  • 打赏
  • 举报
回复
#include <iostream.h>
void print(int a[3][3])
{
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
cout<<p[i][j])<<endl;

}
void main()
{
int a[3][3]={1,2,3,4,5,6,7,8,9};
print(a);
} //?????可以的吗?

zrhk 2003-01-08
  • 打赏
  • 举报
回复
或void main()
{
void showGraph(int *G);
int g[3][3];
showGraph(&g[0][0]);
}
void showGraph(int *G)
{
}
zrhk 2003-01-08
  • 打赏
  • 举报
回复
void main()
{
void showGraph(int *G);
int g[3][3];
showGraph(g[0]);
}
void showGraph(int *G)
{
}

boyfling 2003-01-08
  • 打赏
  • 举报
回复
void showGraph(int G[][3])
sunwhite 2003-01-08
  • 打赏
  • 举报
回复
很简单,你就把t作为一个地址,传递给showGraph函数就行了
rafter263 2003-01-08
  • 打赏
  • 举报
回复
#include <stdio.h>
void print(int (*p)[3])
{
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
printf("%d", p[i][j]);//这个
printf("\n");
}
void main()
{
int a[3][3]={1,2,3,4,5,6,7,8,9};
print(a);
}
myblind 2003-01-08
  • 打赏
  • 举报
回复
何办法?
rafter263 2003-01-08
  • 打赏
  • 举报
回复
有!
myblind 2003-01-08
  • 打赏
  • 举报
回复
谢谢 normalnotebook(逐浪踏雪)
不过我还想问,有没有办法这样用:

printf("%d", a[i][j]);
liu_feng_fly 2003-01-06
  • 打赏
  • 举报
回复
应该使用vector代替数组。那样,就不会碰到这样的问题了
normalnotebook 2003-01-06
  • 打赏
  • 举报
回复
在VC中,二维数组t[3][3],把t传给指向指针的指针**G,一般通不过,可以用指向一维数组的指针,该成(*G)[3];
一个例子:
#include <stdio.h>
void print(int (*p)[3])
{
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
printf("%d,",*(*(p+i)+j));
printf("\n");
}
void main()
{
int a[3][3]={1,2,3,4,5,6,7,8,9};
print(a);
}


tiejun 2003-01-06
  • 打赏
  • 举报
回复
把首地址和维数传进去不就行了吧?
Chrisma 2003-01-06
  • 打赏
  • 举报
回复
主函数应该如此定义t:
int *t[3];
才能传过去。关于类型讨论,看华中科技大学的《C++程序设计教程》
非常透册的。此书在运算符重载,成员指针虚函数、异常和模板方面
很有特色。
myblind 2003-01-05
  • 打赏
  • 举报
回复
应该可以在showGraph()用 G[i][j]吧。

VC.net的代码:
int _tmain(int argc, _TCHAR* argv[])

argv就是一个二维数组
比如可以用 argv[0][2],显示一个字符

加载更多回复(3)

70,037

社区成员

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

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