一个初学者的问题:

gymxyl 2004-10-16 10:29:13
假设定义了一个结构如下:
typedef struct LNode
{ int col;
double value;
struct LNode *next
};
以下又定义了一个指针:
LNode *p;
请问在判断中if(p)是什么意思?
而if(!p)又是什么意思?它与if(p=null)有区别吗?
...全文
174 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
fire314159 2004-10-20
至于if(p),是用来判断p是否指向NULL.
光在楼主写的这种情况下(即LNode *p),if语句没有什么作用。它的作用应该体现在动态分配空间后作检查,看是否成功申请到空间。如
LNode *p;
p=(LNode *)malloc(sizeof(LNode));
if(!P) //如果分配不成功,malloc返回NULL.再取反,便是真。
exit OVERFLOW;//说明分配不成功,异常退出。
回复
fire314159 2004-10-20
首先,不管是否楼主省事或是写错。
--------
typedef struct LNode
{ int col;
double value;
struct LNode *next
};

LNode *p;
---------
这样是错误的!!!
格式应该是
typedef exp1 exp2;
楼主的typedef根本没有取代的标识符。应该为
typedef struct LNode
{ int col;
double value;
struct LNode *next
} LNode;

LNode *p;

-------
又或者
typedef struct LNode
{ int col;
double value;
struct LNode *next
};

struct LNode *p;
-------
小错会成大害
回复
thb28 2004-10-19
if(p) 等价于if(p!=NULL)

if(!p) 等价于if(p==NULL)

因为指针在没有赋值的时候系统使她指向的是NULL
回复
icymirror 2004-10-19
来晚了。:(
回复
pc2s 2004-10-19
if(p)就是if(p!=null)
if(!p)就是if(p=null)
回复
ftkghost 2004-10-16
来晚了!
回复
边城狂人 2004-10-16
在 C 中用整型表示 Boolean 值,也就是说,如果值为0,就是 false,如果值不为0就是true
在 C 中定义 NULL 为 0,指针 p 如果为 NULL,则 if (p) 就判断结果为false,!p 就表示 true。
如果 p 不为 NULL,则相反。

!p 和 p == NULL 是一样的。

不要写在 null,比较用 == 而不是 =
回复
arden1019 2004-10-16
to denbile:
楼主的定义是对的,没有问题。
回复
denbile 2004-10-16
1..用LNode *p 对吗??应该是struct LNode *p;
回复
相关推荐
发帖
新手乐园
创建于2007-09-28

3.3w+

社区成员

C/C++ 新手乐园
申请成为版主
帖子事件
创建了帖子
2004-10-16 10:29
社区公告
暂无公告