考虑这个功能
double avg(double v1,double v2,...)
{
double sum=v1+v2;
int counter=2;
double temp;
va_list pargs;
va_start(pargs,v2);
while((temp=va_arg(pargs,double))!=0.0)
{
sum+=temp;
counter++;
}
va_end(pargs);
return sum/counter;
}
Run Code Online (Sandbox Code Playgroud)
此调用printf("%lf\n",avg(3.0,4.5,4.5,3.0,0.0))返回正确的结果,但如果我删除0.0它打印的最后一个参数-321738127312000000000.0000000,但sum和counter具有正确的值.我有点不明白为什么我要检查!=0.0并拥有最后一个参数0.0
我怎样才能读取 10 个浮点数并将它们存储在一个数组中而不浪费任何内存?
让我们考虑这两行:
char input[1];
gets(input);
Run Code Online (Sandbox Code Playgroud)
假设输入是"测试".printf("%s \n",输入)=>"test"但是如果我使用调试器,我看到输入[0] ='t'没有输入[1] ......究竟发生了什么?
考虑这段代码
char *pass="test";
int keyPressed;
char *password=(char *)malloc(PASS_LENGTH*sizeof(char));
int index=0;
printf("Enter the password please\n");
do
{
keyPressed=getch();
password[index++]=keyPressed;
}
while(keyPressed!=13);
int result=strcmp(pass,password);
Run Code Online (Sandbox Code Playgroud)
我想你明白我想做什么:)
我读*密码"测试"但结果不是0,一些解释会很好:)