【发布时间】:2012-03-03 05:12:10
【问题描述】:
这是关于在将 C++ 中的指针与 NULL 进行比较时的一个小混淆。 这是代码:
struct node
{
int data;
struct node *left;
struct node *right;
}
int main()
{
struct node *p;
if(p!= NULL)
printf("line1\n");
else
printf("line2\n");
struct node *temp;
if(temp == NULL)
printf("line3\n");
}
输出:
line2
line3
而对于下面的一段代码:
struct node
{
int data;
struct node *left;
struct node *right;
}
int main()
{
struct node *p;
if(p!= NULL)
printf("line1\n");
else
printf("line2\n");
struct node *temp;
}
这是输出:
line1
谁能解释一下发生这种情况的原因?
【问题讨论】:
-
我会编辑您的代码,但它充满了 HTML,我没有 10 分钟的时间来摆脱它。要格式化代码,只需将其缩进四个空格。
-
您的代码无法编译。对于
printf,您需要#include <stdio.h>,对于NULL,您需要#include <stddef.h>,并且您在结构定义中缺少分号。几乎总是最好复制并粘贴您的实际代码。 -
@Keith:实际上
<stdio.h>也定义了NULL宏。 -
@KeithThompson:我大体上同意,但对于这个示例,我认为我们可以放心地假设任何回答这个问题的人都会熟悉
printf和NULL。
标签: c pointers null null-pointer