【发布时间】:2015-12-09 15:33:40
【问题描述】:
我正在尝试编写一个函数,它接受可变大小的数组并打印它。但是我在编译时遇到了函数声明参数列表的问题。
错误是:
cannot convert ‘int (*)[(((sizetype)(((ssizetype)r) + -1)) + 1)]’ to ‘int**’ for argument ‘1’ to ‘void printHalf(int**, int, int)’
printHalf( b, r, r);
代码:
#include <iostream>
using namespace std;
void printHalf( int **a, int row, int col ) { // Problem is here.
for( int i=0; i < row; i++) {
for( int j=0; j < col; j++) {
if( i <= j) {
cout << a[i][j] << " ";
}
}
cout << endl;
}
}
int main() {
int r;
cout << "No. of rows: ";
cin >> r;
int b[r][r];
for( int i=0; i < r; i++) {
for( int j=0; j < r; j++) {
cin >> b[i][j];
}
}
printHalf( b, r, r);
return 0;
}
是什么导致了这个错误,我如何将各种数组传递给函数?
【问题讨论】:
-
@coincoin 我认为你应该在 C++ 中使用
new[]而不是malloc()。 -
我认为你不应该使用,而是使用
std::vector。 -
不要用C++写C代码
-
当然是我的错,我确定这是一个 C 问题... :)
标签: c++ arrays function multidimensional-array compiler-errors