아핫뉴스실시간 인기검색어
아핫뉴스 화산 이미지
아하

생활

생활꿀팁

고독한날쥐54
고독한날쥐54

c언어 함수 코드 궁금한 게 있습니다

void MaxandMin(int **Max,int **Min, int arr[])

{

int i;


for (i = 0; i < 5; i++)

{

if (**Max < arr[i])

*Max = &arr[i]; // **Max = arr[i];

if (**Min > arr[i])

*Min = &arr[i]; // **Min = arr[i];

}

}


int main(void)

{

int arr[5];

int *max,*min;

int i;


for (i = 0; i < 5; i++)

{

printf("숫자 입력: ");

scanf_s("%d", &arr[i]);

}

max = min = &arr[0];

MaxandMin(&max, &min, arr);

printf("큰 수: %d, 작은 수: %d", *max, *min);

return 0;

}

위 함수에서 주석처리된 코드로 바꾸면 마지막으로 입력한 수가 출력됩니다.코드하고 주석 코드하고 같다고 생각했는데 왜 다른 결과가 나오는지 모르겠네요.큰 수만 구하면 정상적으로 되는데.어떻게 된 걸까요?

    55글자 더 채워주세요.
    1개의 답변이 있어요!
    • 상냥한칼새271
      상냥한칼새271

      아래 링크에 주석으로 설명을 추가해두었습니다.

      https://repl.it/@hhan87/Aha-4458f97ca791da67aea6560ebcfc4cee

      일단 간단하게 요약을 하면

      *Min = &arr[i]는 포인터 값을 변경하는 구문이고

      이경우 *Min은 arr[0]이 아니라 arr[i]를 가리키게 됩니다.

      **Min = arr[i]는

      *Min이 가리키는 곳의 값(arr[0])을 변경하는 곳입니다.

      즉 arr[0] = arr[i]과 같습니다.