Starfall 发表于 2017-5-21 20:22:36

关于条件判断的一点小问题

void print_data(const LINK_NODE* pLinkNode)
{
    LINK_NODE* pIndex = NULL;
    if(NULL == pLinkNode)
      return;

    printf("%d\n", pLinkNode->data);
    pIndex = pLinkNode->next;
    while(pLinkNode != pIndex){
      printf("%d\n", pIndex->data);
      pIndex = pIndex ->next;
    }
}

我想知道if后头的NULL==pLinkNode与pLinkNode==p这两者有什么差别
平时写这个不都是a==0啥的

人造人 发表于 2017-5-21 21:11:12

不明白你想问什么

小菜鸡or 发表于 2017-5-22 11:11:12

传入的应该是链表的指针,
if(NULL == pLinkNode)如果传入的是空指针,就直接返回,
如果指针非空,就直接输出 值printf("%d\n", pLinkNode->data);   
pIndex = pLinkNode->next; 取链表的下一个,
while(pLinkNode != pIndex){判断 链表是否结束,
printf("%d\n", pIndex->data);如果没有结束,输出数据,
pIndex = pIndex ->next;   取链表下一个


不是很清楚你想问什么?

Starfall 发表于 2017-5-22 21:12:27

自己傻了打错了。。。丢人
if后面的条件判断NULL == pLinkNode为什么要这么写而不是pLinkNode==NULL
把NULL写前面有什么奥妙吗

Hacker_Jack 发表于 2017-5-22 23:11:42

虽然楼主打错了但是我大概猜到了你想问什么。其实这是一个编程的小细节,这个if语句用来判断传入的是否是一个空指针,很多程序猿按照一般化的逻辑就这么写pLinkNode==NULL,但是万一少了个=,那就变成赋值了呵呵,但是倒过来写就没这个问题,NULL == pLinkNode少写一个=,编译器是会直接报错的,因为你不能给一个右值赋值{:10_256:}

Starfall 发表于 2017-5-23 12:07:24

Hacker_Jack 发表于 2017-5-22 23:11
虽然楼主打错了但是我大概猜到了你想问什么。其实这是一个编程的小细节,这个if语句用来判断传入的是否是一 ...

谢谢解答,我之前一直感到疑惑。
不过打错了真的很尴尬。。
页: [1]
查看完整版本: 关于条件判断的一点小问题