prev up next   top/contents search

comp.lang.c FAQ 列表· 问题 2.9

Q结构体的传递和返回是如何实现的?


A当结构体作为参数传递给函数时,通常会将整个结构体压入堆栈,占用所需的字数。 (程序员通常选择使用结构体指针,正是为了避免这种开销。) 一些编译器仅仅传递结构体的指针,尽管他们可能需要创建一个局部副本以保持传值语义。

函数通常通过一个额外的、由编译器提供的“隐藏”参数指向的位置来返回结构体。一些旧的编译器使用一个特殊的、静态的位置来返回结构体,尽管这使得结构体值函数不可重入,这是 ANSI C 所不允许的。

参考文献:ISO Sec. 5.2.3


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管