新微赢技术网
标题:
[求助]如何用二维数组做函数的参数?
[打印本页]
作者:
孤独与夜缠绵
时间:
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, 希望对你以及对大家会有一些帮助。
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int rows = 2;
int cols = 3;
// create a dynamic array
int ** array = NULL;
array = new int * [rows];
for(int i = 0; i < rows; i++)
{
array[i] = new int[cols];
// init this 2d array
for(int j = 0; j<cols; j++)
{
array[i][j] = (i+1)*(j+1);
}
}
// to check what we have done
for(int i = 0; i < rows; i++)
{
for(int j = 0; j<cols; j++)
{
cout<<array[i][j]<<" ";
}
cout<<endl;
}
// before you leave the program
// you should release the space what you have dynamically allocated
// to delete the allocation
for(int i = 0; i<rows; i++)
{
delete [] array[i];
array[i] = NULL; // to avoid wild pointer
}
delete [] array;
array = NULL; // to avoid wild pointer
system("pause");
return 0;
}
复制代码
欢迎光临 新微赢技术网 (http://bbs.weiying.cn/)
Powered by Discuz! X3.2