优点在于传递的大小:当你传递一个大struct的时候,struct如果你按值传递它,编译器会生成代码来复制它.这会浪费CPU周期,并且可能会在程序耗尽堆栈空间时产生这种情况,尤其是在资源稀缺的硬件上,例如嵌入式微控制器.
当您传递一个structby指针,并且您知道该函数不能对其进行修改时,请声明指针const以强制执行此规则:
void take_struct(const struct arg_struct *data) {
data->field = 123; // Triggers an error
}
Run Code Online (Sandbox Code Playgroud)