1
5
变量参数列表函数无法神奇地知道有多少个参数,因此您很可能遍历堆栈,直到碰巧碰到
|
2
5
你需要一个哨兵标记:
变量参数函数,例如
这两个常规方法是一个count(或format string),当您不能使用其中一个可能的值作为哨兵(结尾的标记)时,它很有用。 如果你 使用sentinel(比如指针为NULL,非负有符号整数为-1,这通常更好,这样就不必对元素进行计数(可能会使元素计数和元素列表不同步)。
记住
|
3
3
我从您的代码中了解到的是,您假设在每个参数被“弹出”后,va_next将返回NULL。这是错误的,因为va next绝对无法确定参数的数量:while循环将一直运行,直到随机命中空值。 解决方案:要么提供参数的数量,要么添加一个额外的“NULL”参数来调用函数。
|
4
2
作为对其他答案的补充,您应该将
|
5
1
正如其他人所说,
|
Community wiki · C中有哪些耗时的操作? 1 年前 |
Community wiki · 将所有处理器电源都投入到任务中 1 年前 |
Community wiki · C++为C添加了什么?[已关闭] 1 年前 |
Community wiki · 打印1到1000,不带循环或条件 1 年前 |