繁体   English   中英

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

[英]advantage of passing pointer to a struct as argument?

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

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

优点在于传递的大小:当您传递一个大型struct ,编译器会生成代码,以便在按值传递该struct时生成该struct的副本。 这会浪费CPU周期,并且可能会在程序耗尽堆栈空间时产生这种情况,尤其是在资源稀缺的硬件上,例如嵌入式微控制器。

当您通过指针传递struct ,并且您知道该函数不能对其进行修改时,请声明指针const以强制执行此规则:

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

是的,指针的大小通常比整个结构的大小小得多。 您可以节省堆栈和时间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM