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

时间:2014-02-27 19:07:44

标签: c pointers

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

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

2 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:4)

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