首页 > 解决方案 > 如何检查我的变量是否等于 NULL ?C

问题描述

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

标签: cnull-check

解决方案


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

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

您只需确保在将其传递给您的函数之前tab已正确初始化。函数本身无法确定是否是这种情况。

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

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


推荐阅读