读书人

构造复合字面值做函数参数

发布时间: 2013-03-06 16:20:31 作者: rapoo

结构复合字面值做函数参数?
本帖最后由 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一样。

读书人网 >C语言

热点推荐