C언어/주차별 문제

[10주차] 이중포인터를 이용한 최솟값, 최댓값 구하기

슈슈버거 2023. 6. 6. 14:59

문제


내가 작성한 코드

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

void MinMax(int **maxPtr, int **minPtr, int *num); //최소최대 값 찾아주는 함수 선언

int main() {
    int num[5]; //5개짜리 정수 저장할 배열

    for(int i =0; i<5; i++){ //정수 입력받기
        scanf("%d", &num[i]);
    }

    int *maxPtr = &num[0]; //최댓값
    int *minPtr = &num[0]; //최솟값
    // 둘 다 일단 맨 첫번째 값으로 설정

    MinMax(&maxPtr, &minPtr, &num); //함수 호출

    printf("%d %d\n", *minPtr, *maxPtr); //결과값 출력

    return 0;
}

void MinMax(int **maxPtr, int **minPtr, int *num){
    int *ptr = num; //정수 배열 연결

    for(int i = 0; i<5; i++){ //정수 개수만큼 반복
        if(*(ptr+i)>=**(maxPtr)){ //최댓값보다 크거나 같을 경우
            *maxPtr = ptr+i; //ptr+i의 주소 maxPtr의 값으로 저장
        }

        if(*(ptr+i)<= **(minPtr)){ //최솟값보다 작거나 같을 경우
            *minPtr = ptr+i; //ptr+i의 주소 minPtr의 값으로 저장
        }
    }
}

이중포인터는 *를 했을 때 나오는 값이 주소라는 점!!!

그 주소의 값을 불러오려면 *를 한 번 더 해야한다는 점!!!