![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
C++中二维数组在函数中传递时形参和实参应该怎么写
#include<iostream>usingnamespacestd;voidprint(char**);intmain(){constintlength=10;cha...
#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:我的目的是要传递一个未知大小的二维数组) 展开
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:我的目的是要传递一个未知大小的二维数组) 展开
4个回答
展开全部
形参使用指向数组的指针,实参直接用数组名。
样例代码:
/* 注意列数必须要给出来,因为程序要计算(a+1)的位置就必须知道列数 */
int foo1(int (*a)[10]) {return a[1][0];}
/* 形参本质上仍是指向数组的指针,只是写成了数组的形式 */
int foo2(int a[10][10]) {return a[1][0];}
/* 如上,既然本质上是指向数组的指针,行数就可以省略 */
int foo3(int a[][10]) {return a[1][0];}
#include <iostream>
int main()
{
int a[10][10] = {0}; // 数组元素全初始化为0
a[1][0] = 1;
/* 以下三条语句均成功输出1 */
std::cout << foo1(a) << std::endl;
std::cout << foo2(a) << std::endl;
std::cout << foo3(a) << std::endl;
return 0;
}
展开全部
#include <iostream>
using namespace std;
void print( char b[][ length ] );
int main()
{
const int length = 10;
char a[ length ][ length ];
a[ 2 ][ 2 ] = '1';
print( a );
}
void print( char b[][ length ] )
{
cout << b[ 2 ][ 2 ] << endl;
}
传递时二维数组大小不能为止,特别是数组的最后一个的宽度。否则报错。
using namespace std;
void print( char b[][ length ] );
int main()
{
const int length = 10;
char a[ length ][ length ];
a[ 2 ][ 2 ] = '1';
print( a );
}
void print( char b[][ length ] )
{
cout << b[ 2 ][ 2 ] << endl;
}
传递时二维数组大小不能为止,特别是数组的最后一个的宽度。否则报错。
更多追问追答
追问
如果最后一个宽度事先不知道呢,之前定义数组时用了new
追答
那只能用链表。数组完不成的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream>
using namespace std;
void print(char a[][10]);
int main() {
const int length = 10;
char a[10][10];
a[2][2] = '1';
print(a);
return 0;
}
void print(char b[][10]) {
cout << b[2][2] << endl;
}
using namespace std;
void print(char a[][10]);
int main() {
const int length = 10;
char a[10][10];
a[2][2] = '1';
print(a);
return 0;
}
void print(char b[][10]) {
cout << b[2][2] << endl;
}
更多追问追答
追问
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;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream>
using namespace std;
void prints( char b );
int main()
{
char a[ 10 ][ 10 ];
a[ 2 ][ 2 ] = '1';
prints( a[ 2 ][ 2 ] );
system("pause");
}
void prints( char b )
{
cout << b << endl;
}
using namespace std;
void prints( char b );
int main()
{
char a[ 10 ][ 10 ];
a[ 2 ][ 2 ] = '1';
prints( a[ 2 ][ 2 ] );
system("pause");
}
void prints( char b )
{
cout << b << 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;
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询