如何解决具有较少数量参数的C函数在调用较少数量参数时返回意外输出
我正在学习C,并且创建了一个简单的addNumbers(int num,...)
函数,该函数接受任意数量的int参数,并返回它们的总和。
这个问题是当我得到addNumbers(4,2)
的输出时,输出为14823901
。显然是不正确的。
当我调用函数addNumbers(4,2,4,7,10)
时,它输出23
,这也是不正确的,因为它应该是27
,但至少离它更近了。
这是我的代码:
#include<stdio.h>
#include<stdarg.h>
// Functions with variable number of arguments
int addNumbers(int num,...)
{
int i;
int sum = 0;
// List to hold variable amount of parameters
va_list parameters;
// Initialize "parameters" list with arguments
va_start(parameters,num);
for(i = 0; i < num; i++)
{
// Adds each "int" argument from "parameters" to sum
sum += va_arg(parameters,int);
}
// Cleans memory
va_end(parameters);
return sum;
}
int main()
{
printf("%i",addNumbers(4,10));
return 0;
}
我应该不使用va_list
,va_arg
等吗?
能够接受可变数量的参数的最佳方法是什么?
解决方法
对于addNumber(4,2),您正在使用第一个参数作为计数器,其中有4个参数要累加,但您只给出1,因此for循环继续从内存中读取期望更多的参数,并选择随机值和加起来。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。