建议使用什么,将结构作为指针传递给const
,即
int doCalculations(const MyStruct* my_struct);
或按值传递struct
,如
int doCalculations(MyStruct my_struct);
为什么?
在C ++中,我记得在const
/ struct
有一个非平凡的构造函数时,应该使用传递Class
的引用。在C中虽然没有构造函数,但我想仍然需要一些时间来制作struct
的本地副本。
答案 0 :(得分:3)
如果您打算修改结构,那么显然必须通过指针传递它。
如果您不打算修改结构,那么通常的做法是通过指针传递以避免不必要的复制。指针将占用sizeof(void *)
内存,但可以通过寄存器传递(因此根本不使用堆栈内存)。
按值传递struct几乎总是会在堆栈上复制它。
您必须选择的两种情况:
volatile
)字段,那么您可能希望通过指针传递它,以便始终拥有最新版本。free
那个内存),那么您显然必须复制它(按值传递)。答案 1 :(得分:0)
建议按值传递结构有两个原因:
1)。将结构内容复制到新内容所花费的时间 临时变量。
2)。浪费的堆栈空间量,特别是如果 结构很大。
因此,使用指向const的指针是一个更可行的选择。