편집 기록

편집 기록
  • 프로필 최진우님의 편집
    날짜2018.08.27

    이중 포인터 변수를 활용하는 문제를 풀던중 의문이 들었어요!!


    #include<stdio.h>
    
    void MaxAndMin(int * arr,int size,int **mxptr,int **mnptr)
    {
        int * max,* min;
        int i;
        *max=*min=arr[0];
        for(i=0;i<size;i++)
        {
            if(*max<arr[i])
                *max=arr[i];
            if(*min>arr[i])
                *min=arr[i];
        }
        *mxptr=max;
        *mnptr=min;
    }
    
    int main(void)
    {
        int *maxPtr;
        int *minPtr;
        int arr[5];
        int i;
    
        for(i=0;i<sizeof(arr)/sizeof(int);i++)
        {
            printf("정수 입력 %d:",i+1);
            scanf("%d",&arr[i]);
        }
        MaxAndMin(arr,sizeof(arr)/sizeof(int),&maxPtr,&minPtr);
        printf("%d %d",*maxPtr,*minPtr);
        return 0;
    }
    

    여기에 있는 코드와

    #include<stdio.h>
    
    void MaxAndMin(int * arr,int size,int **mxptr,int **mnptr)
    {
        int * max,* min;
        int i;
        max=min=&arr[0];
        for(i=0;i<size;i++)
        {
            if(*max<arr[i])
                max=&arr[i];
            if(*min>arr[i])
                min=&arr[i];
        }
        *mxptr=max;
        *mnptr=min;
    }
    
    int main(void)
    {
        int *maxPtr;
        int *minPtr;
        int arr[5];
        int i;
    
        for(i=0;i<sizeof(arr)/sizeof(int);i++)
        {
            printf("정수 입력 %d:",i+1);
            scanf("%d",&arr[i]);
        }
        MaxAndMin(arr,sizeof(arr)/sizeof(int),&maxPtr,&minPtr);
        printf("%d %d",*maxPtr,*minPtr);
        return 0;
    }
    

    여기에 있는 코드의 차이점은 MaxAndMin함수에서 for문에서 *min과 min을 각각 사용했다는건데요 위의 코드는 딱히 큰 문제는 없어보이는데 실행이 되지 않고 밑에것은 정상적으로 작동하는데 위의 것은 작동이 되지 않는 이유를 알고 싶어요!!(참고로 코드는 정수 5개를 입력받아 최댓값 최솟값을 찾는 코드입니다. 다른 방법들은 저도 많이 알고 있으니 이 방법에서 틀린부분만 찾아주시면 감사하겠습니다.)

  • 프로필 알 수 없는 사용자님의 편집
    날짜2018.08.24

    이중 포인터 변수를 활용하는 문제를 풀던중 의문이 들었어요!!


    #include<stdio.h>
    
    void MaxAndMin(int * arr,int size,int **mxptr,int **mnptr)
    {
        int * max,* min;
        int i;
        *max=*min=arr[0];
        for(i=0;i<size;i++)
        {
            if(*max<arr[i])
                *max=arr[i];
            if(*min>arr[i])
                *min=arr[i];
        }
        *mxptr=max;
        *mnptr=min;
    }
    
    int main(void)
    {
        int *maxPtr;
        int *minPtr;
        int arr[5];
        int i;
    
        for(i=0;i<sizeof(arr)/sizeof(int);i++)
        {
            printf("정수 입력 %d:",i+1);
            scanf("%d",&arr[i]);
        }
        MaxAndMin(arr,sizeof(arr)/sizeof(int),&maxPtr,&minPtr);
        printf("%d %d",*maxPtr,*minPtr);
        return 0;
    }
    

    여기에 있는 코드와

    #include<stdio.h>
    
    void MaxAndMin(int * arr,int size,int **mxptr,int **mnptr)
    {
        int * max,* min;
        int i;
        max=min=&arr[0];
        for(i=0;i<size;i++)
        {
            if(*max<arr[i])
                max=&arr[i];
            if(*min>arr[i])
                min=&arr[i];
        }
        *mxptr=max;
        *mnptr=min;
    }
    
    int main(void)
    {
        int *maxPtr;
        int *minPtr;
        int arr[5];
        int i;
    
        for(i=0;i<sizeof(arr)/sizeof(int);i++)
        {
            printf("정수 입력 %d:",i+1);
            scanf("%d",&arr[i]);
        }
        MaxAndMin(arr,sizeof(arr)/sizeof(int),&maxPtr,&minPtr);
        printf("%d %d",*maxPtr,*minPtr);
        return 0;
    }
    

    여기에 있는 코드의 차이점은 MaxAndMin함수에서 for문에서 *min과 min을 각각 사용했다는건데요 위의 코드는 딱히 큰 문제는 없어보이는데 실행이 되지 않고 밑에것은 정상적으로 작동하는데 위의 것은 작동이 되지 않는 이유를 알고 싶어요!!(참고로 코드는 정수 5개를 입력받아 최댓값 최솟값을 찾는 코드입니다. 다른 방법들은 저도 많이 알고 있으니 이 방법에서 틀린부분만 찾아주시면 감사하겠습니다.)