【发布时间】:2011-11-01 22:32:48
【问题描述】:
我正在尝试使用 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) 访问它。为什么?
这是 procces envp(并有效)的函数:
int envplen(char ***envp)
{
int count = 0;
while((*envp)[count] != NULL)
{
count++;
}
return count;
}
另外,我是否可以在 envplen 函数中仅使用 envp 访问 envp,但仍然通过引用传递它?
之前谢谢。
【问题讨论】:
标签: c pointers multidimensional-array