在C的例子中,'ap'代表什么?

jw5wzhpr  于 2023-04-19  发布在  其他
关注(0)|答案(3)|浏览(144)

例如,在参考文献中:

type va_arg (va_list ap, type)

ap代表参数指针吗?还是别的什么?

hi3rlvi2

hi3rlvi21#

这个问题其实很容易回答
ap代表 argument pointer
摘自The C Programming Language,第二版,Brian W. Kernighan和Dennis M.里奇:
7.3变长参数列表
[...]类型va_list用于声明一个变量,该变量将依次引用每个参数;在minprintf中,此变量称为ap,即“参数指针”

kq0g1dla

kq0g1dla2#

ap代表 Argument Pointer。实际上,它是sometimes abbreviated as arg_ptr

type va_arg(
   va_list arg_ptr,
   type 
);
  • type-要检索的参数的类型。
  • arg_ptr-指向参数列表的指针。
h5qlskok

h5qlskok3#

这个问题很难回答。
参见ouah's answer;在K&R2中提到了短语“变元指针”。
<stdarg.h>头文件是由ANSI C标准在1989年引入的。ANSI C Rationale没有显示任何示例,也没有使用aparg_ptr的名称。标准本身(最新草案是here)在示例中使用ap的名称,但没有解释它。
我还没有找到ap这个名字的解释,它最初代表的是“参数指针”,但同样重要的是要注意va_list类型不是例如,在gcc中,它被定义为__builtin_va_list,一种由编译器直接实现的类型(在我的系统上它的大小恰好是24字节,但这不是特别有用的信息--除了它在该实现中不是指针)。
底线是:名称apva_list对象的常规名称,没有特别的原因,我们需要关心。

相关问题