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为指向一个还有两个整型值的数组
^
在C/C++中,二维数组作为参数传递时,通常会退化为指针。但有三种情况例外:1) 数组初始化时;2) 使用sizeof运算符时;3) 使用&a获取数组地址。这些情况下,数组保持其原始类型。
2096

被折叠的 条评论
为什么被折叠?



