C언어 구조체 Swap 함수

구조체를 함수 인자로 값으로 전달하면 함수 안에서 바꾼 값은 원본에 반영되지 않는다. 값을 바꾼 구조체를 반환하거나, 포인터를 전달해야 한다.




반환값으로 교체

struct Score {
    double math;
    double english;
};

struct Score swap(struct Score value) {
    double temp = value.math;
    value.math = value.english;
    value.english = temp;
    return value;
}




score = swap(score);




구조체가 크거나 원본을 직접 수정해야 한다면 포인터를 인자로 받는 방식이 더 적합하다. 이때는 포인터가 유효한지와 수정 범위를 함께 관리한다.

Comments

댓글을 불러오고 있습니다.