1
Cofyc 2013-04-03 15:44:48 +08:00
不能用判断是否为 NULL 来确定参数列表是否结束。(虽然有些情况会执行正确,切好当参数列表后面的内存块值为空时)
因为 C 的可变参数不像 python 之类的传递的是一个 list 或 dict 对象(可以获取参数列表的长度与类型),而只是传递一个起始地址。之后有多少参数,每个参数是什么类型是由程序去判断并处理的。 比如 printf 需要第一个参数为 format 字符串表明后面参数依次是什么类型。比如: printf("%s: %d", ...) 接受一个字符串和一个整数 你可以将 func 设计成第一个参数接受一个整数,表明后面有多少个整数去处理。比如: void func(int num,...) 然后,程序里面 int i; for (i = 0; i < num; i++) { // .. } 这样去处理。 使用:func(4, &a, &b, &c, &d) |