今天使用某個函式,其中的引數是型別為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 ...