#include <stdio.h>
void func(int **);
int main()
{
int *arr[2];
func(arr);
printf("value [1] = %d \n",*arr[0]);
printf("value [2] = %d \n",*arr[1]);
return 0;
}
void func(int **arr)
{
int j = 10;
arr[0] = &j;
arr[1] = &j;
}
코드가 gcc로 컴파일되면 성공적으로 컴파일됩니다. 그러나 출력은 다음과 같습니다.포인터 배열의 가비지 값
value [1] = 10
value [2] = 32725
두 번째 값은 가비지 값입니다. 왜 그래야만하지? 배열에 액세스 할 때 이중 포인터를 올바르게 사용할 수 있습니까?
이 함수가 종료 된 후 일부 함수 ('func'의'j')에서 로컬 변수를 사용하는 것은 잘못되었습니다. – osgx