어떻게 함수를 정확하게 사용하여 두 개의 수치를 교환합니까?

1205 단어
먼저 잘못된 방법:
#include
void exchange(int, int);
void exchange(int one, int another)
{
    int tmp;
    tmp = one;
    one = anthoner;
    another = tmp;
}
int main()
{
    int num1;
    int num2;
    scanf('%d %d', &num1,&num2);
    exchange(num1, num2);
    printf(' :%d %d', num1, num2);
    return 0;
}

함수는 그 안의 국부 변수에 대해 값을 교환했을 뿐이고 진정으로num1,num2에 대한 값을 교환하지 않았기 때문에 실질적으로 함수 호출 창고 바늘이 위로 이동하고 함수 호출이 끝난 후에 창고 바늘이 떨어지고num1,num2가 창고에서 차지하는 위치에 대해 조작하지 않았다.
다음은 올바른 방법입니다.
 
#include
void exchange(int *, int *);
void exchange(int *one, int *another)
{
    int tmp;
    tmp =*one;
    *one = *anthoner;
    *another = tmp;
}
int main()
{
    int num1;
    int num2;
    scanf('%d %d', &num1,&num2);
    exchange(&num1, &num2);
    printf(' :%d %d', num1, num2);
    return 0;
}

함수형 인삼 변수의 데이터 형식을 int*로 바꾸고 실삼을num1과num2의 첫 번째 주소로 바꾸면 함수 호출할 때num1과num2가 있는 메모리 공간의 첫 번째 주소에 값을 부여하고 함수내에one,another에 대한 변화는 실삼num1,num2에 대한 변화입니다!
프로세스:one가 가리키는 공간의 값을 tmp에 복사하고 another가 가리키는 공간의 값을 one가 가리키는 공간에 부여하고 마지막으로 tmp 공간의 값을 another가 가리키는 공간에 부여합니다.

좋은 웹페이지 즐겨찾기