[英]Is there a principle for choosing between embedding a struct itself or the pointer to a struct inside a struct?
[英]Pointer to struct or struct itself?
考虑以下代码:
struct s { /* ... */ };
void f(struct s x) { /* ... */) /* (1) */
/* or */
void f(const struct s *x) { /* ... */ } /* (2) */
当struct s
具有合适的大小时,在这种情况下我们应该更喜欢第一种形式吗?
你问哪个更好?
这取决于你想要做什么 - 带指针的第二种形式会更有效率。 但是如果你只想将值传递给f
并且不必担心副作用,那么你可以选择第一个签名 - 只要struct
不是太大。
我建议读这个 。
当struct s
的大小合适时,你应该避免按值传递它,特别是在递归函数中。
按值传递结构意味着它在函数调用之前被复制。 这导致执行速度变慢,内存利用率更高。 还要注意, struct
将在堆栈中进行分配,在某些系统中,堆栈大小非常有限。
我建议在每种情况下使用指针,除非您需要通过函数修改结构的多个副本,并且您不希望这些修改仅在每个函数的范围内可见。
当你想要f
获得x
的副本而不是指向x
的const
指针时,首选第一个表单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.