将指针传递给结构作为参数的优势?

Dee*_*pak 5 c pointers

我们的编码风格是当我们修改结构的内容时,我们将指向结构的指针传递给函数.

但是,当我们不修改结构的内容时,是否还有理由更喜欢将指针传递给函数?

das*_*ght 7

优点在于传递的大小:当你传递一个大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)