我是一名编程学生,试图更好地理解指针,我学到的一件事是你可以设置指向NULL的指针。我的问题是,这两个陈述有什么区别?他们每个人什么时候会返回真/假?
if (some_ptr == NULL)
if (*some_ptr == NULL)
谢谢!的
答案 0 :(得分:9)
第一个将变量的地址与null进行比较,第二个取消引用指针,获取保持的值并将其与null进行比较。
答案 1 :(得分:3)
第一个语句引用some_ptr指向的指针的实际地址。如果它是NULL(由define NULL表示的值),则为true,否则为。
后一种语句引用指针所指向的地址的内容。因此,如果您将some_ptr指向一个整数,并且该整数恰好与您的null定义相同,则第二个条件的计算结果为true。
答案 2 :(得分:1)
首先是你将指针本身与NULL进行比较,这似乎是可取的。
第二个是您首先取消引用指针以获取值,然后将其与NULL进行比较,就像您根据变量名将int值比较为0.
答案 3 :(得分:1)
第一个说:
some_ptr 是否为空?
第二个说:
是什么some_ptr指向 NULL?
答案 4 :(得分:0)
例如:int * x;如果你喜欢检查x是否指向NULL,那么我们使用第一个语句。使用相同的int * x,如果使用第二个语句,则尝试取消引用指针并检查x指向的值。因为C中的NULL为0,所以C ++会检查x指向的值0 编辑:同样使用第二个语句,如果x指向NULL,则引用NULL指针会导致UNIX上的核心丢弃。