我是编程的学生想更好地了解指针,我学到的一件事是,你可以设置一个指针为NULL。我的问题是,什么是这两个语句之间的区别?当将他们每个人都返回真/假?

if (some_ptr ==  NULL)

if (*some_ptr == NULL)

谢谢!

有帮助吗?

解决方案

在第一不反对变量为null的地址进行比较,所述第二取消引用指针,得到在其保持的值和针对零进行比较。

其他提示

的第一个语句是指指针some_ptr指向实际ADRESS。在情况下,它NULL(在由限定NULL表示的值),这是真的,否则不

后者的陈述是指在指针所指向的ADRESS的内容。所以,如果你有some_ptr点整数,该整数恰好是为你空定义相同的,第二个条件计算为真。

首先是你是比较指针本身对NULL,这似乎可取的。

第二个是,你是第一解引用指针来获得,然后将其与NULL比较的值,如要基于您的变数名称的int值进行比较,以0

在第一表示:结果 是 some_ptr 的NULL?

在第二表示:结果 是的任何some_ptr指向的NULL?

有关例如:整数* X;在这里,如果你想检查是否X点为NULL,那么我们使用的第一个语句。在相同的INT * X,如果使用第二条语句,那么你正在尝试取消引用指针并检查该X点的值。因为NULL是C 0,C ++它检查值0表示X点。搜索结果 编辑:还与第二个语句,如果x点到NULL,则deferencing NULL指针导致在UNIX核心降

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top