一个初学者的问题:

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)有区别吗?
...全文
190 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
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;

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧