如何检查size_t指针是否为NULL? (C)

时间:2014-03-18 06:15:48

标签: c pointers null

如果我在C:

中有这些代码行
size_t num = 10;
size_t *pointer = #

以下检查似乎有效,但我想确保我做得对:

if (pointer != NULL)
    printf("pointer is not NULL \n");
else
    printf("pointer is NULL \n");

2 个答案:

答案 0 :(得分:1)

指针是一个变量,指向另一个变量的地址/内存位置。

size_t num = 10;

根据1999 ISO C标准(C99),size_t是至少16位的无符号整数类型。所以 num 变量的值为10.

size_t *pointer = #

一个名为' 指针的指针'声明并指向变量' num '的地址(&符号(&)运算符给出变量的地址/内存位置。)

由于指针指向某个值,因此指针值不为NULL,因此输出将为

pointer is not NULL

要解释一下,

空指针 - 如果指针没有指向任何地方,则称其为空指针

答案 1 :(得分:0)

C FAQ有一个专门针对空指针的部分:http://c-faq.com/null/

这告诉你:

  

根据语言定义,一个"积分常量表达式,其值为0''在指针上下文中,在编译时将其转换为空指针。也就是说,在一方是指针类型的变量或表达式的初始化,赋值或比较中,编译器可以告诉另一方的常量0请求空指针,并生成正确类型的空指针值。

所以你像这样测试空指针:

if (pointer != 0)

或者更简洁:

if (pointer)

至于NULL宏,再次引用C FAQ

  

预处理器宏NULL(由多个标头,包括stdio.hstddef.h)定义为空指针常量,通常为0((void *)0)