.诗 2023-12-07 21:01 采纳率: 58.2%
浏览 2
已结题

一个关于数据结构的问题


struct node{
    int id;
    char level;
    struct node *next;
};
typedef node NODE;
NODE create(){
    int id;
    char level;
    NODE *head=NULL,*tail=NULL,*p=NULL;//头指针,尾指针,指针t; 
    printf("请输入ID和等级%d%c");//提示语,;
    scanf("%d%c",&id,&level);
    while(id>0){
        p=(NODE *)malloc(sizeof(NODE));
        p->id=id;
        p->level=level;
        p->next=NULL;
//后面就不写出来了

我想请问一下NODE *p是不是一个结构体指针。
结构体指针指向的是不是一个地址,为什么这个指针还会有成员?如果他是一个指针不应该只是单纯地指向一个地址,为什么还会有成员,不太懂其中的逻辑关系

  • 写回答

2条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-12-07 22:32
    关注

    【以下回答由 GPT 生成】

    NODE *p是一个结构体指针,它指向的是一个NODE类型的结构体变量。结构体指针的成员访问方式和普通结构体变量是一样的,通过指针访问结构体成员需要使用"->"操作符。
    
    结构体指针指向的是结构体变量在内存中的地址,而结构体本身包含多个成员,因此指针指向的地址中也包含这些成员。所以通过指针访问结构体的成员时,实际上是在指向的地址中找到对应的成员变量。
    
    在你的代码中,使用NODE *p来指向一个NODE类型的结构体变量,可以通过p->id和p->level来访问结构体变量的成员id和level。
    
    希望以上解释对你有所帮助。如果还有疑问,请随时提出。
    

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月26日
  • 已采纳回答 12月18日
  • 创建了问题 12月7日