[英]cannot convert from int[][] to int**?
我在調用方函數中有以下代碼
int matrix[3][3] = {{1, 2, 3},{4, 5, 6},{7, 8, 9}};
find_index(matrix);
find_index的原型是:
void find_index(int** m);
而且我得到了編譯器錯誤:無法將'int(*)[3]'轉換為'int **'
反正我可以解決這個問題? 謝謝!
更新:
有沒有一種方法可以讓我在第二個函數中使用m [a] [b]運算符,而不用傳遞列號來執行m [a * col_num + b]?
雙索引數組仍然僅對應於一個指針,而不是指向指針的指針。
在內存中, int**
看起來像
[0] ----> [0] ---> int
[1] ---> int
[2] ---> int
[1] ----> [0] ---> int
[1] ---> int
[2] ---> int
[2] ----> [0] ---> int
[1] ---> int
[2] ---> int
但是一個int[][]
看起來像
[0][1][2][0][1][2][0][1][2]
(0) (1) (2)
因此,您可以看到對它們進行索引將如何導致發生不同的事情(一個取消引用指針,一個執行不同的算法),並且它們不兼容。 嘗試像int**
一樣索引int[][]
會導致您存儲的整數之一被取消引用,從而導致未定義的行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.