void getoffdata(float **offdata, int col){......
}void main()
{
float offlinedata[24][16];
int line = 16;
getoffdata(offlinedata,line);
}
报错D:\QT\Projects\RSSI_Position\main.cpp:17: error: cannot convert 'float (*)[16]' to 'float**' for argument '1' to 'void getoffdata(float**, int)' getoffdata(offlinedata,line);
二维数组参数传递出现错误,C++大书里给了一种方法:
void func1 (int iArray [] [10]) { } int main () { int array [10] [10]; func1 (array); } 这里确定了第二个维度的大小。 因为C语言里二维数组传入函数时数组退化为指针,因此一下方式也可以:
void func2 (int (* pArray) [10]) { }
以下为数组退化:
int f1 (int apples []); int f1 (int apples [10]); int f1 (int * apples);
在C语言中,以上三种写法是等价的。C++里针对数组退化做出了改进:
那么什么情况下数组不会退化为指针类型呢?
数则不会退化的情况就三种,我们只要记下来就好了!
1. 初始化的时候。如int a[2] = {1,2}; 此时的a为数组
2. sizeof的时候。如 sizeof(a)此时的a也为数组
3. &a,此时a为指向一个还有两个整型值的数组
^