我正在尝试使用 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;
}
问题在于,当我想要在
proc_arr
内部访问array
时,我无法这样做。据我理解,我们应该这样访问它:void proc_arr(int ***array)
{
(*array)[0][1] = 10;
}
所以,我对array
进行了取消引用操作,告诉编译器我想去那个地址并获取值。但不知何故,它崩溃了。我尝试了多种*
和括号的组合,但仍然无法使其工作。我很确定这是因为我不理解指针以及指针的指针。
哦,我注意到如果我们也使用char **
(字符串数组),例如argv和envp,那么就会有所不同。但对于envp,我不知怎的可以使用(*envp)
访问它。为什么呢?
这里是处理envp的函数(有效):
int envplen(char ***envp)
{
int count = 0;
while((*envp)[count] != NULL)
{
count++;
}
return count;
}
另外,我是否可以仅通过envp
访问envplen
函数中的envp
,但仍然通过引用传递它?
感谢您的帮助。