일단 위 상황은 더블포인터를 쓸 상황이 전혀 아니야


쉽게 생각하면되, char 의 배열을 char * 로 쓰지? 문자열 같은거 말이야


더블포인터를 왜 쓰냐면 포인터의 배열을 다루기 위해 쓰는거야


linked list 는 배웠지? 그 리스트의 배열을 다룰때 더블포인터를 쓰는거야




하여튼 코드로 돌아가면 커다란 문제점이 두개나 있네


maxandmin 함수에서


*max = *min = &arr[0] 이거는 잘못됐어, 더블포인터를 이용해서 정수값을 저장하고 싶다면

**max = **min = &arr[0] 이렇게 해야지


근데 애초에 더블포인터를 사용할 필요가 전혀 없는 함수야


그냥 함수에 *max, *min 이렇게 포인터만 넘기면 되




그리고 두번째로 포인터는 주소를 가리키는 공간인데 메모리 공간을 동적으로 할당해줘야해


malloc 으로 말이지


근데 메모리 공간 할당없이 바로 *max 등으로 메모리를 참조하네?


int * maxPtr; 에서 maxPtr 에는 어떤 값이 있을까? 쓰레기주소값이지

포인터는 주소를 저장하는 값이야.

정수를 저장할 메모리 공간이 있고 그 메모리를 가리키는게 포인터인데, 정수를 저장할 메모리 공간을 할당 안해줬자나


int * maxPtr = malloc(sizeof(int));

뭐 이렇게 메모리 할당을 해줘야 하지 않을까?


그리고 애초에 이 코드자체가 동적으로 메모리 할당을 할 필요 없이 정수로 선언하면 될것 같은데


아래와 같은 코드가 되겠지




한번해봐 개념잡기가 어려운것 뿐이지 초심자에게도 쉬운 코드임



ps : 추가 arr[] 배열을  그대로 넘겨도 되고, 내가 써놓은 것처럼 arr[] 배열을 *arr 포인터로 넘긴다면


*arr[i] 이런식으로 앞에 * 붙여서 값참조를 해야할것 같아


컴파일하면서 에러체킹하고 만들어보면 금방 답 나오겠지