被神喜欢798 2022-06-18 20:58 采纳率: 50%
浏览 74
已结题

结构体指针为NULL和结构体的成员指针为NULL的区别

结构体指针为NULL和结构体的成员指针为NULL的区别
typedef struct Node{
int data;
struct Node * pnext;
}NODE,*PNODE;
PNODE p;
p=NULL和p->pnext=NULL的区别

  • 写回答

1条回答 默认 最新

  • a5156520 2022-06-18 22:06
    关注

    如果从逻辑含义上来看的话,p代表首节点或当前节点,p->pnext代表当前节点的下一个节点,p为NULL代表当前节点为空,p->pnext为NULL代表当前节点的下一个节点为空,一般代表用是否为空来判断当前节点是由有值(结构成员data),下面是一个例子(例子与实际编程的情况可能有所不同):

    
    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct Node{
    int data;
    struct Node * pnext;
    }NODE,*PNODE;
    PNODE p;
    
    int main(void){
        
        PNODE p = (Node*)malloc(sizeof(Node));
        p->pnext=NULL;
        p->data = 1;
        //printf("p->data=%d\n",p->data);
        
        p->pnext = (Node*)malloc(sizeof(Node));
        p->pnext->data = 2;
        p->pnext->pnext=NULL;
    //    printf("p->pnext->data=%d\n",p->pnext->data);
    
        
    
            while(p!=NULL){  //代表当前节点不为空,即代表当前节点有值 
                printf("%d ",p->data);
                p= p->pnext;  //把p指向后一个节点pnext, 如果赋值后的p不为NULL,即代表pnext不为NULL,代表下一个节点有值 
            }
        
        
        
    }
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 8月8日
  • 已采纳回答 7月31日
  • 创建了问题 6月18日

悬赏问题

  • ¥15 ensp路由器启动不了一直报#
  • ¥50 安卓10如何在没有root权限的情况下设置开机自动启动指定app?
  • ¥15 ats2837 spi2从机的代码
  • ¥200 wsl2 vllm qwen1.5部署问题
  • ¥100 有偿求数字经济对经贸的影响机制的一个数学模型,弄不出来已经快要碎掉了
  • ¥15 数学建模数学建模需要
  • ¥15 已知许多点位,想通过高斯分布来随机选择固定数量的点位怎么改
  • ¥20 nao机器人语音识别问题
  • ¥15 怎么生成确定数目的泊松点过程
  • ¥15 layui数据表格多次重载的数据覆盖问题