c語言 二維陣列指標賦值給指向指標的指標 崩潰問題

2021-09-28 20:20:40 字數 639 閱讀 3001

今天使用某個函式,其中的引數是型別為char**, 使用了乙個固定的二維陣列,將其賦值給予,編譯時產生警告;在執行的呼叫的函式(其中沒有任何對字串內容的修改),列印其中的字串,直接崩潰。

警告內容:expected 『char **』 but argument is of type 『char (*)[32]』

最初用型別轉換,問題照常出現。

後來是宣告了乙個指標陣列,將用二維陣列標識的字串陣列中各個字串的指標賦值進去,進行了解決。

個人假象:應該是編譯器擔心用過用二維陣列給char**賦值,如果在呼叫的函式中操作了指向指標的指標的內容,存在越界的可能。所以產生了警告,而不是錯誤。

至於為什麼執行發生了崩潰,還不是太明白。

解決方式,例項**如下:

#include #include #include char twodarray[5][10] = ;

void printdoublepointer(char **dbp, int num)

}int main()

printdoublepointer(strparray, 5);

for(i=0; i<5; ++i)

return 0;

}

C語言二維陣列指標(指向二維陣列的指標)

二維陣列的定義 int matrix 見圖的操作那篇文章裡面的定義 或者這篇文章提供了另外一種方法。二維陣列在概念上是二維的,有行和列,但在記憶體中所有的陣列元素都是連續排列的,它們之間沒有 縫隙 以下面的二維陣列 a 為例 int a 3 4 從概念上理解,a 的分布像乙個矩陣 0 1 2 3 4...

C 之指標指向二維陣列

一維指標通經常使用指標表示,其指向的位址是陣列第一元素所在的記憶體位址,例如以下 int ary 4 5 int aryp 5 ary 那麼ary 4 相當於int aryp 下面理解如此。但引數傳遞須要知道實參所在 的一維個數,所以傳遞的時候應該傳遞多乙個引數,子陣列的引用能夠理解 為 p 那麼取...

c 二維陣列賦值及二維指標使用

include void main int tmp 2 test printf value d n tmp 0 printf value d n tmp 0 printf value d n tmp 1 printf value d n tmp 1 printf value d n tmp 0 1 ...