繁体   English   中英

指向struct或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的副本而不是指向xconst指针时,首选第一个表单。

暂无
暂无

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

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