在函数中使用结构时,我提供了两种将其作为参数传递的方法,但我不知道哪种方法更好。
#include <stdio.h>
typedef struct Person{
int age;
int id;
} person;
static void foo(person *p1);
int main()
{
person per1;
person per2[1];
foo(&per1); /*1*/
foo(per2); /*2*/
printf("per1. Age: %i; id: %i\n",per1.age,per1.id);
printf("per2. Age: %i; id: %i\n",per2->age,per2->id);
return 0;
}
static void foo(person *p1)
{
p1->age=10;
p1->id=123;
}
Run Code Online (Sandbox Code Playgroud)
用例仅适用于struct的一个实例。如果只需要一个,就性能和使用感而言,传递通用结构声明的地址,或传递将衰减到指针的结构的单一数组,哪个更好?
任何现代编译器在每种情况下都会产生相同的机器代码,因此无需担心性能。(请参阅Godbolt)。
由于没有性能差异,请以最能表达您意图的方式进行。您的意图是拥有一个对象,并将该对象的地址传递给函数。因此,只需执行此操作(即您的第一选择)。无缘无故地创建一个1元素的数组只会使事情变得混乱。
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |