C에서 다차원 배열에 대한 포인터 개념을 실험하고 있습니다. 함수를 통해 다차원 배열을 처리하려고한다고 가정합니다. 코드는 좀 다음과 같습니다 : 나는 proc_arr
내부 array
에 액세스 할 때다차원 배열의 포인터가 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;
}
문제가있다, 난 할 수 없습니다.
void proc_arr(int ***array)
{
(*array)[0][1] = 10;
}
그래서 내가 그 주소로 이동하여 값을 얻으려면 컴파일러에게하는
array
을 derefer : 나의 이해에서, 우리는 이런 식으로 접근해야한다. 그러나 어쨌든, 그것은 충돌합니다.
*
과 괄호의 여러 조합을 시도했지만 여전히 작동하지 않습니다. 나는 그것이 포인터와 포인터의 포인터를 이해하지 못하기 때문에 그것이라고 확신한다.
아, argv 및 envp와 마찬가지로 char **
(문자열 배열)로 작업하면 다르다는 것을 알았습니다. 하지만 envp에 대해서는 어떻게 든 (*envp)
으로 액세스 할 수 있습니다. 왜?
여기 envp는을 procces 함수는 (그리고 일) :
int envplen(char ***envp)
{
int count = 0;
while((*envp)[count] != NULL)
{
count++;
}
return count;
}
또한, 나는 어떻게 든에만 envp
으로 envplen
기능에 envp
에 액세스,하지만 여전히 참조로 전달할 수 있습니까?
감사합니다.
좋아, 나는 포인트를 가지고 있다고 생각한다 : 배열은 포인터가 아니다. 감사. – bertzzie