我正在嘗試C中指向多維數組的指針的概念。假設我想通過函數處理多維數組。代碼有點看起來是這樣的:多維數組的指針如何在C中工作
#include <stdio.h>
void proc_arr(int ***array)
{
// some code
}
int main(int argc, char **argv)
{
int array[10][10];
for(int i = 0; i < 10; i++)
{
for(int j = 0; j < 10; j++)
{
array[i][j] = i * j;
}
}
proc_arr(&array);
return 0;
}
的問題是,當我想訪問array
內proc_arr
,我不能。從我的理解,我們應該獲得這樣說:
void proc_arr(int ***array)
{
(*array)[0][1] = 10;
}
所以我derefer的array
告訴我要到該地址並獲得價值編譯器。但不知何故,它崩潰。我試過*
和括號的幾種組合,但仍然無法使其工作。我很確定這是因爲我不瞭解指針和指針指針。
哦,我注意到,如果我們使用char **
(字符串數組)也是如此,就像argv和envp一樣。但對於envp,我以某種方式可以通過(*envp)
訪問它。爲什麼?
下面是procces envp的函數(工作):
int envplen(char ***envp)
{
int count = 0;
while((*envp)[count] != NULL)
{
count++;
}
return count;
}
而且,我可以採用某種訪問envp
在envplen
功能只有envp
,但仍通過引用傳遞嗎?
以前感謝。
好吧,我想我明白了:數組不是指針。謝謝。 – bertzzie