我必须编写代码来检查代码中的输入是否正确。我必须防止输入字母、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;
}
最佳答案
C 存储值的方式与 Javascript 或 Python 不同。在 C 语言中,不存在没有值的变量。仅通过查看变量本身永远无法确定变量是否已初始化。变量可以未初始化,但使用该变量会导致未定义的行为,在这种情况下 ub 最可能的结果是您得到一个很可能为零的随机值。
如果你声明float f
,那么你就保留了一定数量的内存(对于 float 来说通常是4个字节)。每次在表达式中使用 f
时,在地址 &f
处找到的任何位模式都将被解释为 float 。某些位模式对于 float 可能是特殊的,但 NULL 不是其中之一,但是当涉及整数时,每个位模式都是有效的常规整数。
您只需确保 tab
在将其传递给您的函数之前已正确初始化。函数本身无法确定是否是这种情况。
在C中,NULL是一个常量,通常是void*
类型,但也可能是int
类型。预期目的是用于指针,不应用于其他任何用途。
此外,C 是一种静态类型语言,这意味着变量永远不能改变类型。 float 永远不能包含字母。您可以通过转换使 float 包含与整数、四字符字符串、指针或其他内容相同的位模式,但结果很可能没有意义。
关于c - 如何检查我的变量是否等于 NULL ? C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55326130/