구조체

구조체 포인터를 함수 인수로 전달 vs 구조체를 함수 인수로 전달


하지만 몇 가지 차이점이 존재하는데 우선 포인터를 통해 참조 호출을 했으므로 함수 내부에서 구조체를 변경할 수 있다. 형식 인수가 실인수의 사본이 아니라 번지를 알고 있으므로 -> 연산자로 실인수 자체를 읽고 쓸 수 있는 것이다. 그리고 성능상으로도 확연한 차이가 있는데 두말할 필요없이 포인터를 전달하는 방식이 훨씬 더 빠르다. 구조체는 보통 수십 바이트이고 커지면 수백 바이트 이상이 될 수 있지만 포인터는 기껏해야 4바이트밖에 안된다.

구조체를 통째로 복사하여 전달하는 데 걸리는 시간과 4바이트의 포인터를 전달하는 데 걸리는 시간은 비교해 보나 마나다. 그래서 구조체를 함수끼리 전달해야 할 필요가 있을 때는 보통 포인터를 사용한다. 단, 구조체가 아주 작다면 가령 10바이트 정도밖에 안된다면 이런 경우는 성능상의 불이익이 별로 없으므로 구조체를 그냥 넘기는 것이 더 편리하다.

'c/c++' 카테고리의 다른 글

서비스  (0) 2013.02.25
const 과 #define  (0) 2013.01.30
함수에서 값을 반환하는 방법  (0) 2013.01.18
CAtlArray 예제  (0) 2013.01.10
IPC  (0) 2013.01.08