我有以下结构和下面列出的两种方法。哪种方法更好,为什么?
typedef struct _MY_ST_
{
int a;
int b;
} MY_ST;
方法1:
int func1(MY_ST my_st)
{
int temp;
temp = my_st.a + my_st.b;
return temp;
}
方法2:
int func2(const MY_ST *const my_st)
{
int temp;
temp = my_st->a + my_st->b;
return temp;
}
答案 0 :(得分:1)
如此小的结构(2个整数),你不会看到差异。
通常,通常将指针传递给结构是有意义的,因为它避免了不必要的复制。但是在这种特殊情况下,我会说,只要选择你感觉更舒服并且对你有意义的话。
此外,您不需要func2()
中的参数为const MY_ST *const my_st
。 const MY_ST *my_str
就足够了,因为指针是通过副本传递的,所以被调用者无法修改调用者的指针值。
答案 1 :(得分:0)
我想说第二种方法更好,因为你只将一个指针传递给你的结构所在的内存。在第一种方法中,您传递who结构,计算机将在内存中复制函数中的结构 - 将构建结构的副本。 (但运行优化的编译器可能会使两个方法等效)