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

标签 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;
}

最佳答案

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/

相关文章:

c - 简单赋值中的段错误

c - 使用 32 位值进行 64 位循环的有效方法

java - 在现有 Java 7 代码中使用 Java 8 Optional

java - 为什么 Kotlin 进行空检查,当反编译为 Java 时会声明一些未使用的变量?

Java 消除空值检查会导致错误代码吗?

构造一个循环来检查一个数字的数字之和是否能被 3 整除

android - 如何理解bionic的bcopy.c中的这段代码?

c++ - 解释字符串文字

C#,多个 == 运算符重载,没有模糊的 null 检查

typescript - 有没有办法同时检查 `null` 和 `undefined` ?