C언어 프로그래밍 인자로 전달되는 값
C언어 프로그래밍 인자로 전달되는 값은 복사 값
C언어에서 함수를 호출할 때 어떤 데이터를 넘겨주면서 그것을 대입해서 함수를 실행하도록 하는 경우 전달되는 값을 인자라고 하는데요. 함수에는 같은 같은 자료형의 변수... 즉, 매개변수에 그 값을 저장했다가 이용하게 됩니다. 다음 예제에서 이 개념을 확인해보겠습니다.
▲ main() 함수에서 int형 변수 su1과 su2를 선언과 초기화 한 후 hap()이라는 함수를 호출하면서 그 값을 전달하고 있습니다. 그리고 호출되는 함수에서는 두 값을 받아서 더해서 출력하고 있는 내용입니다. 이렇게 값을 전달하고 받아서 함수를 실행하게 되는데.....
여기서 중요한 내용은 hap()을 호출하면서 전달한 값 su1과 su2입니다. 이 녀석들은 정말로 su1과 su2에 저장된 값일까요? 결론부터 정리하자면 크기만 같은 값이고 완전 별개의 데이터입니다. 즉, 10, 20을 그대로 옮겨버리는 게 아니고 복사를 해서 던져주는 형식인 것입니다. 그렇기 때문에 hap() 함수를 실행해서 전달한 값들이 바뀌어도 원래 su1과 su2의 값은 바뀌지 않습니다. 예제를 조금 바꿔서 이 내용을 확인해보겠습니다.
▲ 역시 10과 20으로 초기화한 int 변수 su1과 su2를 hap() 함수를 호출하면서 인자로 전달하고 있고 hap()에서는 그 값을 받아서 각각 50과 60을 증가한 후 출력하고 있습니다. 당연히 증가된 값이 출력이 될 것입니다. 그렇다면 이 함수를 실행한 후 마지막으로 다시 한 번 su1과 su2의 값을 출력하고 있는데요. 증가된 값이 출력될까요? 아니겠죠? 앞에서 정리한 대로 변수들의 값 자체가 옮겨간 것이 아니고 복사돼서 전달한 것이기 때문에 원래의 값에는 변화가 없는 것입니다. 프로그램을 실행해서 결과를 확인하고 마무리하겠습니다.
▲ hap()에서 더해진 값들이 출력되어도 원래의 값은 변함이 없다는 걸 확인할 수 있습니다.
이렇게 해서 전달인자의 개념을 알아봤는데요. 대충 정리하자면 전달되는 인자는 변수 자체의 값을 옮기는 것이 아니라 같은 크기의 값을 복사해서 전달하기 때문에 다른 함수에서 그 값의 크기에 변화가 생기더라도 기존의 값은 변화가 없다는 점을 확인해봤습니다. 수고하셨어요.