如何在函数调用期间声明和传递结构?
How to declare and pass a structure during function invocation?
在函数调用过程中声明和传递一个基本数据类型的变量是很常见的,我们可以用结构来实现类似的东西吗?下面的代码更好地解释了我的问题。
struct s
{
int i;
char c;
};
void f(int i)
{
return;
}
void g(struct s s1)
{
return;
}
int main()
{
int i = 5; // possible
struct s s1 = {1, 'c'}; // possible
f(i); // possible
g(s1); // possible
f(5); // possible
g({1, 'c'}); // not possible, is there any alternative way ?
return 0;
}
首先,根据经验,您应该避免按值传递结构,因为那样很慢并且会占用大量内存。更好的界面是:
void g (struct s* s1)
...
g(&s1);
要回答这个问题,您可以使用 复合文字:
g( (struct s){1, 'c'} );
在函数调用过程中声明和传递一个基本数据类型的变量是很常见的,我们可以用结构来实现类似的东西吗?下面的代码更好地解释了我的问题。
struct s
{
int i;
char c;
};
void f(int i)
{
return;
}
void g(struct s s1)
{
return;
}
int main()
{
int i = 5; // possible
struct s s1 = {1, 'c'}; // possible
f(i); // possible
g(s1); // possible
f(5); // possible
g({1, 'c'}); // not possible, is there any alternative way ?
return 0;
}
首先,根据经验,您应该避免按值传递结构,因为那样很慢并且会占用大量内存。更好的界面是:
void g (struct s* s1)
...
g(&s1);
要回答这个问题,您可以使用 复合文字:
g( (struct s){1, 'c'} );