- HOME
- Post in | c/c++
- Post at | 2013. 1. 30. 11:49 | by 밀크빵.
- View comment
구조체
구조체 포인터를 함수 인수로 전달 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 |