#include<stdio.h>
int MaxAndMin(int **max, int **min, int *arr);
int main(void)
{
int arr[5] = { 1, 2, 3, 4, 5 };
int *maxPtr = &arr[0];
int *minPtr = &arr[0];
MaxAndMin(&maxPtr, &minPtr, arr);
printf("최대값 : %d 최소값 : %d \n", *maxPtr, *minPtr);
}
int MaxAndMin(int **max, int **min, int *arr)
{
for (int i = 0; i < 5; i++) {
if (*max < &arr[i]) {
*max = &arr[i];
}
}
for (int i = 0; i < 5; i++) {
if (*min > &arr[i]) {
*min = &arr[i];
}
}
}
이 코드에서 if (*max < &arr[i]), if (*min > &arr[i]) 이 두 부분을
if (*max < arr[i]), if (*min > arr[i])로 바꿔서 출력하면 최대값과 최소값이 반대로 나오더라구요.
왜 &이걸 붙혀서 주소값을 받는데 최대값, 최소값이 바뀌는거에요??
소스 이렇게 짜면 혼남.
ㄴ 소스가 잘못되었나요? ㅠㅠ
#include<stdio.h>int MaxAndMin(int *max, int *min, int *arr);int main(void){ int arr[5] = { 1, 2, 3, 4, 5 }; int maxPtr = arr[0]; int minPtr = arr[0]; MaxAndMin(&maxPtr;, &minPtr;, arr); printf("최대값 : %d 최소값 : %d n", maxPtr, minPtr);}int MaxAndMin(int *max, int *min, int *arr) { for (int i = 0; i < 5; i++) { if (*max < arr[i]) {
*max = arr[i]; } } for (int i = 0; i < 5; i++) { if (*min > arr[i]) { *min = arr[i]; } } }
ㄴ 아 죄송합니다. 문제가 포인터 변수 2개를 선언하고 함수에 포인터 변수 2개와 배열을 전달해서 변수 maxPtr에는 가장 큰 값의 배열요소의 주소값, minPtr에는 가장 작은 값의 배열요소의 주소값을 저장해야하는 문제에욧.