注册 登录
编程论坛 C++教室

这个程序有什么问题?

csmenglei951 发布于 2007-10-04 14:11, 573 次点击
#include<iostream.h>
void fuction(int[][])
{};
int main()
{
int i,j;
const int N=5;
int a[N][N];
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
a[i][j]=N*i+j+1;
return 0;
}
}
void fuction(a)
{};
我就是想输入一个a[5][5]的数组,并把这个数组保存在fuction开辟的内存空间上
这是错误提示:C:\Documents and Settings\Administrator\fg.cpp(2) : error C2087: '<Unknown>' : missing subscript
C:\Documents and Settings\Administrator\fg.cpp(16) : error C2065: 'a' : undeclared identifier
C:\Documents and Settings\Administrator\fg.cpp(17) : error C2448: '<Unknown>' : function-style initializer appears to be a function definition
8 回复
#2
aipb20072007-10-04 14:29

没有2维数组,我们说的2维数组就是数组的数组。

所以int[][]是什么意思?应该是int[][N]

#3
夜子2007-10-04 14:52

斑竹的意思是二维数组作为数组的数组,所以作为这个数组里面的元素数组的定义就必须是完备了咯,所以必须写int[][N],这个N表示作为这个数组的数组,其元素数组必须是一个已知容量的数组是么?

#4
chen78062007-10-04 15:26

二维数组初始化时,行号可以为空,列号不能为空。二个空肯定不符合规则。

#5
夜子2007-10-04 15:31

#include<iostream>
using namespace std;
const int N=5;
void fuction(int[][N]);//声明也是一条语句,这里也可以写int m[][5]
int main()
{
int i,j;

int a[N][N];
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
a[i][j]=N*i+j+1;//i*N代表上一行的峰值
cout<<a[i][j]<<" ";
}
cout<<endl;

}
cout<<"put the numbers in another memory state"<<endl;
fuction(a);
return 0;
}
void fuction(int m[][N])//表示形参必须是一个以N元素为容量的一维数组的2维数组
{
int (*p)[N];
p=new int[N][N];
int a,b;
for(a=0;a<N;a++)
{
for(b=0;b<N;b++)
{
p[a][b]=m[a][b];
cout<<p[a][b]<<" ";
}
cout<<endl;
}
}

嗬嗬,我帮你调试好了,现在你可以直接把这个粘贴到VC里面就可以运行咯

#6
csmenglei9512007-10-04 15:44
谢谢夜子兄,佩服ing..
#7
aipb20072007-10-04 16:08
以下是引用夜子在2007-10-4 14:52:40的发言:

斑竹的意思是二维数组作为数组的数组,所以作为这个数组里面的元素数组的定义就必须是完备了咯,所以必须写int[][N],这个N表示作为这个数组的数组,其元素数组必须是一个已知容量的数组是么?

#8
reedleaf2007-10-04 20:37
路过,
好久没来,路过支持一下
#9
夜子2007-10-05 18:18
不谢。大家互相学习`
1