我必须编写代码来检查我的代码输入是否正确。我必须防止输入字母,NULL等。
我尝试了简单的if(* tab == NULL)..但是我无法比较float和void值。
int avg(const float* tab, unsigned int size, float *result)
{
if( size <= 0)
{
return 1;
}
float suma = 0;
for(unsigned int i=0;i<size;i++)
{
suma=suma + *(tab+i);
}
*result = suma / size;
return 0;
}
答案 0 :(得分:2)
C的存储值与Javascript或Python不同。在C语言中,不存在没有值的变量。您永远无法仅通过查看变量本身来确定变量是否已初始化。变量可以未初始化,但是使用该变量将导致未定义的行为,在这种情况下,ub最有可能的结果是您获得的随机值很有可能为零。 / p>
如果执行声明float f
,则保留一定数量的内存(通常为4个字节用于浮点数)。每次在表达式中使用f
时,在地址&f
上找到的任何位模式都将被解释为浮点数。某些位模式可能对浮点数特殊,但NULL并不是其中之一,但是当涉及整数时,则每个位模式都是有效的常规整数。
只需要将tab
正确初始化 ,然后再将其传递给函数。函数本身无法确定是否是这种情况。
在C中,NULL是一个常量,通常为void*
类型,但也可以为int
类型。预期目的是用于指针,不得用于其他任何用途。
此外,C是一种静态类型的语言,这意味着变量永远不能更改类型。浮点数不能包含字母。您可以通过 casting 进行浮点运算,以包含与整数,四个字符串,指针或其他内容相同的位模式,但是很可能结果没有意义。