문제가 정수 3개를 입력 받아 그 중 높은 숫자와 낮은 숫자를 출력하는 건데요....
#include <stdio.h>
int input();
int large(int* marr1);
int low(int* marr2);
int main(void)
{
int arr[3];
printf("3개의 정수를 입력하세요.\n");
for (int i = 0; i < 3; i++)
{
arr[i] = input();
}
printf("정수 세 개중 높은 숫자는 : %d 입니다\n", large(&arr[0])); //&arr[0] <<<<<<<<이해 불가
printf("정수 세 개중 낮은 숫자는 : %d 입니다\n", low(&arr[0]));
return 0;
}
int input()
{
int a = 0;
printf("정수를 입력하세요\n");
scanf("%d", &a);
return a;
}
int large(int* marr1)
{
int num = 0;
num = marr1[0] < marr1[1] ? marr1[1] : marr1[0];
num = num < marr1[3] ? marr1[3] : num;
return num;
}
int low(int* marr2)
{
int num = 0;
num = marr2[0] < marr2[1] ? marr2[0] : marr2[1];
num = num < marr2[3] ? num : marr2[3];
return num;
}
실행 결과 입니다.ㅠㅠ 높은 숫자도 이상하게 나오고 낮은 숫자는 아예 쓰레기 값이 나오네요..
그리고 위에 주석부분에 이해가 안가는게 배열 첫번째 변수가 (arr[0]) 주소를 뜻하는게 아닌가요?
그럼 그냥 arr[0]로 넘겨주고 포인터로 받으면 될줄 알았는데. 프로그램 중지뜨네요.. & 주소연산자? 붙이니까 중지는 안뜨는데
제가 알고 있는게 잘못된 생각인가요??
그리고 결과값이 왜 저렇게 나오는지좀 알려주실분 계신가요 ㅠㅠ