新微赢技术网

标题: [求助]如何用二维数组做函数的参数? [打印本页]

作者: 孤独与夜缠绵    时间: 2009-11-4 00:46
标题: [求助]如何用二维数组做函数的参数?
请帮我看看下面哪里出了问题
/*
计算杨辉三角形。
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;
}
}
作者: 森林的眼泪    时间: 2009-11-4 00:46
adhkfhksdfhsdfjsdlfjslajdfldjfklflskiwoelajfojflwncvvnancvniwfnancnvw,nflnvncnvwklfwhfankhcvnnefkwnsn,x
cnvnn,xcnviwnnuifkwjenjkfakncviwnnvhfnwknjksnfkahkndknfwiefkwneehuhksnfkjsfniwuehfkwhkand,cnhusenwinfew
这样的问题犯的着传递一个二次的指针嘛
不用
作者: 酷aiq兒kuku    时间: 2009-11-4 00:46
楼主,问题很大呀
说关键的吧
多维数组做参数
需要把除了最高维以外的维数传过去
例如三维 就要这么传s[(最高维才可省略)][3][3];
这样系统才能有序的给你分配空间
作者: 简单快乐    时间: 2009-11-4 00:46
兄弟,你在啊
作者: 听妈妈的话    时间: 2009-11-4 00:46
那接受的函数是不是也要声明 除最高维的参数
void Func(int a[][i]) /// int a[][3] 可以通过
{
................
}
void main()
{
a[2][3];
Func(a);
}

这样好像是不行的
那怎么样动态的传二维数组呢?
我现在只知道用 int ** a 的办法,
但是 这样的话 还要先 一个个构造 a ,比较麻烦。。。。。
作者: ゛,    时间: 2009-11-4 00:46
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. }

复制代码





欢迎光临 新微赢技术网 (http://bbs.weiying.cn/) Powered by Discuz! X3.2