结构复合字面值做函数参数?
本帖最后由 GioPna 于 2013-02-26 11:15:07 编辑 《C语言程序设计 现代方法》
16.2.4 复合字面值
print_part((struct part){528,"Disk drive",10});
上面的复合字面值创建一个part结构,依次包括528,"Disk drive"和10。这个结构之后被传递到print_part显示。
----------------------------
书本的函数:print_part()
函数调用时用复合字面值,但是,这个复合字面值没有结构变量:p.
函数定义时有个结构变量p。这样对么?
完整的程序是怎样?
[解决办法]
大概就是LS的这个意思
比如有void foo(int x) { ... }这样一个函数。
我们可以定义一个变量int a = 1;
然后这样调用它foo(a)
当然,我们也可以直接这样调用foo(1),这样就可以少定义一个变量。
然后放到struct的情形
比如有struct bar { ... };
然后有函数void foo(struct bar x) { ... }
注意对于早期的C,必须得定义一个变量,即strcut bar a;然后调用函数foo(a);
现在则不一样了,有了这种新语法之后,可以直接调用foo((struct bar){...}),就好象上面的“字面量”1一样。