二維陣列作為引數傳遞

2021-08-11 07:16:32 字數 757 閱讀 6668

void getoffdata(float **offdata, int col)
void main()
報錯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 ()

這裡確定了第二個維度的大小。 因為c語言裡二維陣列傳入函式時陣列退化為指標,因此一下方式也可以:

void func2 (int (* parray) [10])

以下為陣列退化:
在c語言中,以上三種寫法是等價的。c++裡針對陣列退化做出了改進:
那麼什麼情況下陣列不會退化為指標型別呢?

數則不會退化的情況就三種,我們只要記下來就好了!

1. 初始化的時候。如int a[2] = ; 此時的a為陣列

2. sizeof的時候。如 sizeof(a)此時的a也為陣列

3. &a,此時a為指向乙個還有兩個整型值的陣列

^

二維陣列作為引數傳遞

l二維陣列題的思維收穫 這個演算法跟資料結構沒關係,主要是邏輯思維看圖思考利用的是資料之間的關係 多多舉例具體化嘗試,把複雜的問題具體化,分析那種情況,時間複雜度低。先有思路,再寫 貼近自己的思維。l二維陣列處理的 收穫 在c 中將二維陣列當作引數的時候,必須指明所有維數大小或者省略第一維。但是我們...

二維陣列作為引數傳遞問題

int a 2 2 我定義了這樣乙個陣列,我想把這個陣列作為引數,傳遞到乙個函式中,並要在函式中能引用該二維陣列的元素,我該怎麼做?第一種方式是直接傳遞二維陣列,但是必須標明第二維的值,因為如果只是傳遞a,編譯器無法分配這樣的陣列,所以要這樣傳int a 3 第二種方法是傳遞指標陣列方式,即int ...

二維陣列作為引數傳遞問題

int a 2 2 我定義了這樣乙個陣列,我想把這個陣列作為引數,傳遞到乙個函式中,並要在函式中能引用該二維陣列的元素,我該怎麼做?第一種方式是直接傳遞二維陣列,但是必須標明第二維的值,因為如果只是傳遞a,編譯器無法分配這樣的陣列,所以要這樣傳int a 3 第二種方法是傳遞指標陣列方式,即int ...