设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 1950|回复: 5
打印 上一主题 下一主题

[求助]如何用二维数组做函数的参数?

[复制链接]
跳转到指定楼层
1#
发表于 2009-11-4 00:46:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
请帮我看看下面哪里出了问题
/*
计算杨辉三角形。
void yanghui(int t[][yhSize], int n)
其中t[yhSize][yhSize]二维数组用来存储杨辉三角形,
n是三角形层数。
void print(int t[][yhSize], int n)
*/
#include<iostream>
using namespace std;
void yanghui(int t[][], int n);
void print(int t[][], int n);
int main()
{
int n;
cout<<"请输入杨辉的层数:";
cin>>n;
int* s=new int[n][n];
s[0][0]=s[1][0]=s[1][1]=1;
for(int i=1;i<n;i++)
{
s[i][0]=1;
s[i][i]=1;
for(int j=1;j<i;j++)
s[i][j]=s[i-1][j-1]+s[i-1][j];
}
yanghui(s,n);
return 0;
}
void yanghui(int t[][], int n)
{
print(t,n);
}
void print(int t[][], int n)
{
for(int i=0;i<n;i++)
{
for(int m=1;m<=n-2*i;m++)
cout<<" ";
for(int j=0;j<=i;j++)
cout<<s[i][j];
cout<<endl;
}
}
6#
发表于 2009-11-4 00:46:28 | 只看该作者
wangyou,
你的代码我就不改了, 你的问题其实就是如何动态开辟二维空间的问题, 这个问题在C++ 学习者中是每个人都会遇到的, 针对这个问题我写了一个 Demo code, 希望对你以及对大家会有一些帮助。

  1. #include <iostream>
  2. #include <cstdlib>
  3. using namespace std;

  4. int main()
  5. {
  6. int rows = 2;
  7. int cols = 3;

  8. // create a dynamic array
  9. int ** array = NULL;
  10. array = new int * [rows];


  11. for(int i = 0; i < rows; i++)
  12. {
  13. array[i] = new int[cols];

  14. // init this 2d array
  15. for(int j = 0; j<cols; j++)
  16. {
  17. array[i][j] = (i+1)*(j+1);
  18. }
  19. }


  20. // to check what we have done
  21. for(int i = 0; i < rows; i++)
  22. {
  23. for(int j = 0; j<cols; j++)
  24. {
  25. cout<<array[i][j]<<" ";
  26. }
  27. cout<<endl;
  28. }

  29. // before you leave the program
  30. // you should release the space what you have dynamically allocated
  31. // to delete the allocation
  32. for(int i = 0; i<rows; i++)
  33. {
  34. delete [] array[i];
  35. array[i] = NULL; // to avoid wild pointer
  36. }

  37. delete [] array;
  38. array = NULL; // to avoid wild pointer

  39. system("pause");
  40. return 0;
  41. }

复制代码
回复 支持 反对

使用道具 举报

5#
发表于 2009-11-4 00:46:27 | 只看该作者
那接受的函数是不是也要声明 除最高维的参数
void Func(int a[][i]) /// int a[][3] 可以通过
{
................
}
void main()
{
a[2][3];
Func(a);
}

这样好像是不行的
那怎么样动态的传二维数组呢?
我现在只知道用 int ** a 的办法,
但是 这样的话 还要先 一个个构造 a ,比较麻烦。。。。。
回复 支持 反对

使用道具 举报

4#
发表于 2009-11-4 00:46:26 | 只看该作者
兄弟,你在啊
回复 支持 反对

使用道具 举报

3#
发表于 2009-11-4 00:46:26 | 只看该作者
楼主,问题很大呀
说关键的吧
多维数组做参数
需要把除了最高维以外的维数传过去
例如三维 就要这么传s[(最高维才可省略)][3][3];
这样系统才能有序的给你分配空间
回复 支持 反对

使用道具 举报

2#
发表于 2009-11-4 00:46:25 | 只看该作者
adhkfhksdfhsdfjsdlfjslajdfldjfklflskiwoelajfojflwncvvnancvniwfnancnvw,nflnvncnvwklfwhfankhcvnnefkwnsn,x
cnvnn,xcnviwnnuifkwjenjkfakncviwnnvhfnwknjksnfkahkndknfwiefkwneehuhksnfkjsfniwuehfkwhkand,cnhusenwinfew
这样的问题犯的着传递一个二次的指针嘛
不用
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-18 23:24 , Processed in 0.118239 second(s), 10 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

快速回复 返回顶部 返回列表