2014-02-27 7 views

답변

6

이점은 크기가 전달되는 것입니다. 큰 struct을 전달할 때 컴파일러는 값으로 전달하면 struct 사본을 만들 수있는 코드를 생성합니다. 이렇게하면 CPU 사이클이 낭비되고 프로그램에 스택 공간이 부족한 상황이 발생할 수 있습니다. 특히 임베디드 마이크로 컨트롤러와 같이 부족한 리소스가있는 하드웨어에서 문제가 발생할 수 있습니다.

당신이 포인터에 의한 struct 전달하고 함수가에 수정을 안된다는 것을 알게되면,이 규칙 시행 포인터 const를 선언 :

void take_struct(const struct arg_struct *data) { 
    data->field = 123; // Triggers an error 
} 
3

예, 포인터의 크기는 일반적으로 전체 구조체 크기보다 훨씬 작습니다. 스택과 시간을 저장합니다.

관련 문제