指標陣列引數傳遞
二維陣列不能作為二級指標引數進行傳遞,無法強制轉換。即:
void
fun(
char
**p)
;char str[2]
[6]=
;fun
(str)
;
這樣的呼叫會出錯。
但是指標可以轉化為二級指標。如:
void
fun(
char
**p)
;char
*str[6]
=;fun(str)
;
這樣呼叫就ok。
陣列指標引數傳遞
下面這種情況,呼叫會出錯。
void
func
(int
**p)
;int ary[2]
[6];
func
(ary)
;
這種情況下,二維陣列不能轉化為二級指標。進行如下修改。
void
func
(int
(*p)[6
]);int ary[2]
[6];
func
(ary)
;
這樣呼叫正確。
通過上面的例子可以看出,二維陣列可以轉化為陣列指標,指標陣列可以轉化為二級指標。二維陣列名其實就是乙個陣列指標,指向的是陣列,因此二維陣列可以轉化為陣列指標。指標陣列,是乙個陣列,陣列元素的型別是指標,乙個是指向指標,一直是指向陣列,因為基本資料型別不是陣列指標,因此不可以進行轉化。而二級指標,是指向指標的指標,陣列指標名是指標,指向陣列元素,陣列元素也是指標,因此陣列指標是指向指標的指標,因此可以和二級指標進行轉化。
上面的轉化是針對預設轉化來說的。
陣列指標和指標陣列對應的關係應該如下:
int ary[2]
[6];
int(
*ary1)[6
];int*ary2[2]
;
二維陣列傳遞給二級指標
二維字元陣列與char 關係 收藏 陣列和指標聯絡很緊密,陣列名的含義至少有兩種含義 1.對應資料中的第乙個元素的位址,2.sizeof為陣列大小,而不是指標大小 注 c專家程式設計 中有詳細介紹 程式設計中,需要向某個函式傳遞乙個字串陣列。測試 如下 view plaincopy to clipb...
二維陣列 指標陣列 陣列指標 二級指標
include 指標陣列 array of pointers,即用於儲存指標的陣列,也就是陣列元素都是指標 陣列指標 a pointer to an array,即指向陣列的指標 int a 4 指標陣列 表示 陣列a中的元素都為int型指標 優先順序高於 元素表示 a i int a 4 陣列指標...
二維陣列與二級指標
今日在論壇上看到有人問到指標 級指標和二維陣列 我們知道char array abcdef array是陣列的首位址,那麼在二維陣列中array當然也是陣列的首位址,看看這個定義char array 3 怎麼知道的呢?定義這樣乙個陣列,在vc除錯視窗中 我們看到 array 0x64324234 a...