더블포인터 질문
자랑
2023.04.01
질문 내용 :
#include stdio.h
int maxmin(int **max1,int **min1,int *arr);
int main()
{
int arr[5];
int *max,*min;
int i;
for(i=0;i5;i++)
scanf(%d,&arr[i]);
maxmin(&max,&min,arr);
printf(%d,*max);
printf(\n);
printf(\n);
printf(%d,*min);
}
int maxmin(int **max1,int **min1,int *arr)
{
int i;
int temp=0,temp2=0,temp3=0;
for(i=0;i5;i++)
{
if(temparr[i])
temp=arr[i];
*max1=&temp;
}
for(i=0;i5;i++)
{
if(temp2arr[i])
{
temp2=arr[i];
temp3=temp2;
arr[i]=temp3;
}
*min1=&temp2;
}
return 0;
}
이렇게 실행해보면
max는 값이 잘나오는데
min은 값이 이상하게 출력되네요 문제점이뭐죠 ?
-
한길찬
그럼 temp2는 arr[0] 으로 초기값을 저장해야하나요?
-
꽃바라기슬아
min 값을 구하시는데.. arr 배열내의 값을 변경해버리는 값이 있네요..
max 마냥 바꾸시면 되는데..
for(i = 0; i 5; i++){
if(temp2 arr[i]){
temp2 = arr[i];
*min1 = &temp2;
}
}