例如,在参考文献中:
type va_arg (va_list ap, type)
ap代表参数指针吗?还是别的什么?
ap
hi3rlvi21#
这个问题其实很容易回答ap代表 argument pointer。摘自The C Programming Language,第二版,Brian W. Kernighan和Dennis M.里奇:7.3变长参数列表[...]类型va_list用于声明一个变量,该变量将依次引用每个参数;在minprintf中,此变量称为ap,即“参数指针”
kq0g1dla2#
ap代表 Argument Pointer。实际上,它是sometimes abbreviated as arg_ptr:
arg_ptr
type va_arg( va_list arg_ptr, type );
type
h5qlskok3#
这个问题很难回答。参见ouah's answer;在K&R2中提到了短语“变元指针”。<stdarg.h>头文件是由ANSI C标准在1989年引入的。ANSI C Rationale没有显示任何示例,也没有使用ap或arg_ptr的名称。标准本身(最新草案是here)在示例中使用ap的名称,但没有解释它。我还没有找到ap这个名字的解释,它最初代表的是“参数指针”,但同样重要的是要注意va_list类型不是例如,在gcc中,它被定义为__builtin_va_list,一种由编译器直接实现的类型(在我的系统上它的大小恰好是24字节,但这不是特别有用的信息--除了它在该实现中不是指针)。底线是:名称ap是va_list对象的常规名称,没有特别的原因,我们需要关心。
<stdarg.h>
va_list
__builtin_va_list
3条答案
按热度按时间hi3rlvi21#
这个问题其实很容易回答
ap
代表 argument pointer。摘自The C Programming Language,第二版,Brian W. Kernighan和Dennis M.里奇:
7.3变长参数列表
[...]类型va_list用于声明一个变量,该变量将依次引用每个参数;在minprintf中,此变量称为ap,即“参数指针”
kq0g1dla2#
ap
代表 Argument Pointer。实际上,它是sometimes abbreviated asarg_ptr
:type
-要检索的参数的类型。arg_ptr
-指向参数列表的指针。h5qlskok3#
这个问题很难回答。
参见ouah's answer;在K&R2中提到了短语“变元指针”。
<stdarg.h>
头文件是由ANSI C标准在1989年引入的。ANSI C Rationale没有显示任何示例,也没有使用ap
或arg_ptr
的名称。标准本身(最新草案是here)在示例中使用ap
的名称,但没有解释它。我还没有找到
ap
这个名字的解释,它最初代表的是“参数指针”,但同样重要的是要注意va_list
类型不是例如,在gcc中,它被定义为__builtin_va_list
,一种由编译器直接实现的类型(在我的系统上它的大小恰好是24字节,但这不是特别有用的信息--除了它在该实现中不是指针)。底线是:名称
ap
是va_list
对象的常规名称,没有特别的原因,我们需要关心。