如何检查我的变量是否等于NULL? C

时间:2019-03-24 16:45:42

标签: c null-check

我必须编写代码来检查我的代码输入是否正确。我必须防止输入字母,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;
}

1 个答案:

答案 0 :(得分:2)

C的存储值与Javascript或Python不同。在C语言中,不存在没有值的变量。您永远无法仅通过查看变量本身来确定变量是否已初始化。变量可以未初始化,但是使用该变量将导致未定义的行为,在这种情况下,ub最有可能的结果是您获得的随机值很有可能为零。 / p>

如果执行声明float f,则保留一定数量的内存(通常为4个字节用于浮点数)。每次在表达式中使用f时,在地址&f上找到的任何位模式都将被解释为浮点数。某些位模式可能对浮点数特殊,但NULL并不是其中之一,但是当涉及整数时,则每个位模式都是有效的常规整数。

只需要将tab正确初始化 ,然后再将其传递给函数。函数本身无法确定是否是这种情况。

在C中,NULL是一个常量,通常为void*类型,但也可以为int类型。预期目的是用于指针,不得用于其他任何用途。

此外,C是一种静态类型的语言,这意味着变量永远不能更改类型。浮点数不能包含字母。您可以通过 casting 进行浮点运算,以包含与整数,四个字符串,指针或其他内容相同的位模式,但是很可能结果没有意义。