首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >传递struct与单个struct元素

传递struct与单个struct元素
EN

Stack Overflow用户
提问于 2015-02-25 16:24:08
回答 3查看 117关注 0票数 2

在C中,如果一个结构有多个元素,并且您只想在函数中使用其中的一些元素,那么传递指向结构的指针更好还是应该传递元素本身?还是没有什么区别?

如果我有,例如:

代码语言:javascript
复制
struct Test {
    int a1, a2, a3, a4, a5, a6, a7, a8;
};

和一个使用a1,a2,a3,a4的函数,我应该使用

代码语言:javascript
复制
void f(struct Test*);

代码语言:javascript
复制
void f(int, int, int, int);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-25 16:28:30

有一点不同。传递单个struct元素将为每个值分配内存,因为您是按值而不是通过引用传递的。传递结构指针只需要内存来分配地址。

哪个更好看?这是主观的,没有正确的答案。

票数 4
EN

Stack Overflow用户

发布于 2015-02-25 16:33:23

如果函数是为了处理结构而设计的,那么当然最好声明如下:

代码语言:javascript
复制
void f(struct Test*);

代码语言:javascript
复制
void f(struct Test);

取决于函数中是否应更改原始参数。

另一方面,如果函数被设计为处理大约四个整数值,那么最好这样声明它:

代码语言:javascript
复制
void f(int *, int *, int *, int *);

代码语言:javascript
复制
void f(int, int, int, int);

同样,取决于函数中参数的处理方式。

票数 1
EN

Stack Overflow用户

发布于 2015-02-25 16:42:51

看看你的例子,差别确实可以忽略不计。在某种程度上,这就像对四个整数值传递一个整数值一样。在你的情况下,我宁愿用

void f(const struct Test*);

当您决定对您的功能进行更改时,它将提供更好的可维护性。此外,它保护您避免意外更改的结构。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28724220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档