코딩 스타일은 구조체의 내용을 수정할 때 구조체에 대한 포인터를 함수에 전달하는 것입니다.구조체에 포인터를 인수로 전달하는 이점은 무엇입니까?
그러나 구조체의 내용을 수정하지 않으면 구조체에 대한 포인터를 함수에 전달하는 것이 더 좋은 이유가 있습니까?
코딩 스타일은 구조체의 내용을 수정할 때 구조체에 대한 포인터를 함수에 전달하는 것입니다.구조체에 포인터를 인수로 전달하는 이점은 무엇입니까?
그러나 구조체의 내용을 수정하지 않으면 구조체에 대한 포인터를 함수에 전달하는 것이 더 좋은 이유가 있습니까?
이점은 크기가 전달되는 것입니다. 큰 struct
을 전달할 때 컴파일러는 값으로 전달하면 struct
사본을 만들 수있는 코드를 생성합니다. 이렇게하면 CPU 사이클이 낭비되고 프로그램에 스택 공간이 부족한 상황이 발생할 수 있습니다. 특히 임베디드 마이크로 컨트롤러와 같이 부족한 리소스가있는 하드웨어에서 문제가 발생할 수 있습니다.
당신이 포인터에 의한 struct
전달하고 함수가에 수정을 안된다는 것을 알게되면,이 규칙 시행 포인터 const
를 선언 :
void take_struct(const struct arg_struct *data) {
data->field = 123; // Triggers an error
}
을
예, 포인터의 크기는 일반적으로 전체 구조체 크기보다 훨씬 작습니다. 스택과 시간을 저장합니다.