#include <iostream>
using namespace std;
void print( char ** );
int main()
{
const int length = 10;
char a[ 10 ][ 10 ];
a[ 2 ][ 2 ] = '1';
print( a );
}
void print( char **b )
{
cout << b[ 2 ][ 2 ] << endl;
}
这样子写的话是错的,应该怎么改(ps:我的目的是要传递一个未知大小的二维数组)
形参使用指向数组的指针,实参直接用数组名。
样例代码:
/* 注意列数必须要给出来,因为程序要计算(a+1)的位置就必须知道列数 */如果最后一个宽度事先不知道呢,之前定义数组时用了new
追答那只能用链表。数组完不成的。
追问啊?那我做迷宫的大作业又没学过来链表要传递maze这个二维数组不是做不了了吗
void print(char b[][10])这里面的第二个[]里要写列大小,但如果用了new,事前不知道数组大小呢,怎么传递
追答#include
using namespace std;
void print(char *a[],int n);
int main() {
const int length = 10;
char *a[30];
a[0] = new char[20];
a[0][2] = '1';
print(a,10);
return 0;
}
void print(char *b[],int n) {
cout << b[0][2] << endl;
}
但是void print( char *maze[], int, int );int main(){const int c = 12;char maze[ c ][ c ] = { ' ' };for ( int i = 0; i < c; i++ ){for ( int j = 0; j < c; j ++ ){maze[ i ][ j ] = '#';}}print( maze, c, c );}void print( char *maze[], int c, int c ){for ( int i = 0; i < c; i++ ){for ( int j = 0; j < c; j++ ){cout << maze[ i ][ j ] << " ";}cout << endl;}}
追答#include
#define N 12
using namespace std;
void print(char maze[][N],int);
int main() {
char maze[N][N] = {' '};
for(int i = 0; i < N; i++ ) {
for(int j = 0; j < N; j ++ ) {
maze[i][j] = '#';
}
}
print(maze,N);
}
void print(char maze[][N], int n) {
for(int i = 0; i < n; i++ ) {
for( int j = 0; j < n; j++ ) {
cout << maze[ i ][ j ] << " ";
}
cout << endl;
}
}
额。。你没明白我的意思,我是想传递整个二维数组,而不是只是其中的一个元素。
追答那你还说这样子写的话是错的怎么改!
#include
using namespace std;
void prints( char b[][10] );
int main()
{
char a[10][ 10 ];
a[ 2 ][ 2 ] = '1';
prints( a);
system("pause");
}
void prints( char b[][10] )
{
for (int i = 0;i < 10;i++)
{
for (int j = 0;j < 10;j++)
{
cout << b[i][j] << endl;
}
}
}
如果事先不知数组大小呢