일단 위 상황은 더블포인터를 쓸 상황이 전혀 아니야
쉽게 생각하면되, 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] 이런식으로 앞에 * 붙여서 값참조를 해야할것 같아
컴파일하면서 에러체킹하고 만들어보면 금방 답 나오겠지
고난도로 약파는건지 정말 알려주려고 쓴건지 헷갈리는군;;
정말 고마워 사랑한다 ㅠㅠ