![]() |
1
5
变量参数列表函数无法神奇地知道有多少个参数,因此您很可能遍历堆栈,直到碰巧碰到
|
![]() |
2
5
你需要一个哨兵标记:
变量参数函数,例如
这两个常规方法是一个count(或format string),当您不能使用其中一个可能的值作为哨兵(结尾的标记)时,它很有用。 如果你 使用sentinel(比如指针为NULL,非负有符号整数为-1,这通常更好,这样就不必对元素进行计数(可能会使元素计数和元素列表不同步)。
记住
|
![]() |
3
3
我从您的代码中了解到的是,您假设在每个参数被“弹出”后,va_next将返回NULL。这是错误的,因为va next绝对无法确定参数的数量:while循环将一直运行,直到随机命中空值。 解决方案:要么提供参数的数量,要么添加一个额外的“NULL”参数来调用函数。
|
![]() |
4
2
作为对其他答案的补充,您应该将
|
![]() |
5
1
正如其他人所说,
|
![]() |
Ben · 统计向量中的单词在字符串中出现的频率 8 月前 |
![]() |
bear_525 · 从列中删除中间名和首字母,并保存在单独的列中 9 月前 |
![]() |
asdfadf · 为什么具有相同内存值的字符串和整数打印方式不同? 9 月前 |
![]() |
user764754 · 防止多行原始字符串文字中出现新行字符 10 月前 |
![]() |
Bogaso · 从列表中返回与模式匹配的元素 10 月前 |
![]() |
Jasco · 如何使用VBA提取两个相似字符之间的字符串中的单词? 10 月前 |