当我们修改结构的内容时,我们的编码风格是将指向结构的指针传递给函数。
但是,当我们不修改结构的内容时,是否还有理由更喜欢将结构指针传递给函数?
答案 0 :(得分:7)
优点在于传递的大小:当您传递大struct
时,如果您按值传递,编译器会生成代码以生成struct
的副本。这会浪费CPU周期,并且可能在程序耗尽堆栈空间时产生这种情况,尤其是在资源稀缺的硬件上,例如嵌入式微控制器。
当您通过指针传递struct
并且您知道该函数不能对其进行修改时,请声明指针const
以强制执行此规则:
void take_struct(const struct arg_struct *data) {
data->field = 123; // Triggers an error
}
答案 1 :(得分:4)
是的,指针的大小通常比整个结构的大小小得多。您可以节省堆栈和时间。