void input(char **arr)
{
arr = (char**)malloc(sizeof(char*)*n);
for(int i=0;i<n;i++){
arr[i] = (char*)malloc(sizeof(char)*m);
배열 초기화
}void menu(char ***a)
{
input(*a);
}
main(){char **arr;
menu(&arr);
배열 출력.
}
위에 소스인데.. 함수를 이용해서 2차 동적배열을 만들고 싶어.
근데 배열출력부분에서 에러가 나더라고......왜그런건지...설명좀.ㅠㅠ
포인터가3개라서 좀 헷갈리는데.. 내생각을 말해보자면
2차배열 arr의 주소를 menu함수 매개변수로 전달하면
menu 함수는 3차포인터만 받으니까. a의 값은 arr의 주소를 가진다. 즉 a = &arr 이가 된다?
a가 가지고 있는 값은 arr의 주소, *a는 arr이 가르키는 값을 가르킴...//여기서 좀 헷갈림.
그다음.menu 함수 내부에서 받은 3차포인터 a를 input함수로 a가가리키는 2차포인터를 매개변수로 전달.
input 함수내부에서 받은 2차포인터로 2차동적배열을 만든다.. 그러곤초기화 하고. main 함수에서 할당받은 2차배열을 사용한다..?..
근데 main에서 배열 출력할때 에러가 나길래..뭐가 문제인지 모르겠어...ㅠㅠ
내가 생각하고 있는 포인터 전달???과정이 맞는건지도 모르겠고..누가 설명좀.ㅠㅠ
너님이 짠 할당부분을 보면서 어디가 틀렸는지 생각해 보세요 ㅡㅡ [핡]
ㄴ ???수정했어 설명좀.
또 포인터가 전달되는 과정이 질못된거 같은데 [핡]
3차 포인터로 받아야 되는데 Input에선 결과적으로 2차포인터로 받고있잖아 [핡]