我对C ++很陌生,并希望得到一些帮助我不断得到这个错误。
#include <iostream>
#include <string>
using namespace std;
void print (int test[2][2]= {{1,2},{3,4}})
{
cout << test[0][0] << endl;
cout << test[1][0] << endl;
}
int main()
{
print();
return 0;
}
错误是:无法将'{{1,2},{3,4}}'从''转换为'int(*)[2]'|
我是C ++的初学者,我还在学习。
答案 0 :(得分:5)
声明为数组的函数参数被隐式调整为指向其第一个元素的指针。
所以函数声明实际上看起来像是
void print ( int ( *test )[2] = { { 1, 2 }, { 3, 4 } } );
并且指针可能不会以这种方式初始化,因为它是标量对象。
实际上是这些函数声明
void print( int test[10][2] );
void print( int test[2][2] );
void print( int test[][2] );
void print( int ( *test )[2] );
是等效的,并声明相同的一个函数。
但是,您可以将参数定义为对数组的引用。在这种情况下,您将获得预期的结果。例如
#include <iostream>
void print ( const int ( &test )[2][2] = { { 1, 2 }, { 3, 4 } } )
{
std::cout << test[0][0] << std::endl;
std::cout << test[1][0] << std::endl;
}
int main()
{
print();
int a[2][2] = { { 5, 6 }, { 7, 8 } };
print( a );
}
程序输出
1
3
5
7
答案 1 :(得分:0)
有一个简单的解决方法:
void print (int test[2][2])
{
cout << test[0][0] << endl;
cout << test[1][0] << endl;
}
void print ()
{
int test[2][2] = {{1,2},{3,4}};
print(test);
}