这两个语句之间的区别是什么? - C ++
-
19-09-2019 - |
题
我是编程的学生想更好地了解指针,我学到的一件事是,你可以设置一个指针为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核心降
不隶属于 StackOverflow