열혈강의 390페이지 문제 1 질문..
연블루
질문 제목 : 열혈강의 390페이지 문제 1 질문
이중포인터 사용
질문 내용 :
#includestdio.h
void maxmin(int *arr,int size,int **mx, int **mn)
//배열을 포인터로 받음 , size로 5를 받음, max와 min을 이중포인터인 mx와 mn으로 받음
{
int i;
int *max, *min; //함수 내부에서 max와 min을 포인터로 선언
max=min=arr;
for(i=0;isize;i++)
{
if(*maxarr[i])
max=&arr[i];
if(*minarr[i])
min=&arr[i];
}
*mx=max;
*mn=min;
}
int main(void)
{
int *max;
int *min;
int arr[5];
int i;
printf(5개의 정수를 입력 하세요 \n);
for(i=0;i5;i++)
{
scanf(%d,&arr[i]);
}
maxmin(arr,sizeof(arr)/sizeof(int),&max,&min);
// 배열, 20/4=5 , max와 min의 cbr
printf(최대: %d, 최소: %d\n,*max,*min);
//결과적으로 maxmin 함수의 mx, mn을 출력
return 0;
}
주석은 제가 달았구요...
1. 함수 호출 부분에서
sizeof(arr)/sizeof(int) 이렇게 넘기고
size 이런 식으로 밖에 못 받는 건가요?
2.
for(i=0;isize;i++)
{
if(*maxarr[i])
max=&arr[i];
if(*minarr[i])
min=&arr[i];
}
이 부분을 통해max와 min이 어떻게 나오는지 궁금합니다.. 아무리 봐도 이해가 ;;
3.
이 문제에서는 이중 포인터를 써서 최대와 최소 값을 출력했는데
이중포인터를 사용하지 않고 포인터 만으로 함수를 써서 최대 최소 값을 출력할수 있는지 궁금합니다.