關於二維陣列作為引數傳遞給函式的問題
阿新 • • 發佈:2019-02-13
剛碰到要寫一個函式func,要傳入一個二維陣列給該函式,於是寫成func(int a[][]);但馬上又發現將二維陣列傳給函式時必須指定第二維的維數,因為函式傳遞的是一個指向一個一維陣列的指標,這個一維陣列中儲存有著若干元素的陣列,所以函式必須要知道這個指標所指向物件的資訊,在這裡表現為這個被指向的一維陣列中的基本元素(即陣列)所含元素的個數,也就是說必須指定第二維的維數,不然編譯器不知道該如何定位二維陣列中的元素。
於是就寫成func(int a[][n]);但是問題又來了,這個n是取決於使用者輸入的,也就是說要在執行期才能知道n的確切數值,而編譯器要求在編譯期必須知道陣列元素的大小,於是就只有寫成如下這個不倫不類的東西 func(int** a); 這時如果要在func函式內操作“二維陣列”a,不能直接用下標a[i][j] ,(我也不知道
我覺得這樣的操作很不方便,不知道還有沒有更好的操作二維陣列做引數傳遞的方法,希望補充賜教。