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의 값으로 저장
}
}
}
이중포인터는 *를 했을 때 나오는 값이 주소라는 점!!!
그 주소의 값을 불러오려면 *를 한 번 더 해야한다는 점!!!