为了账号安全,请及时绑定邮箱和手机立即绑定

静态链表问题

p = p->next 改为p = p++为什么运行结果不正确,p += sizeof(a) 这样也不正确求解

#include <stdio.h>

struct weapon {
    int price;
    int atk;
    struct weapon * next;
};


int main(){
    struct weapon a,b,c,*head,*p;
    a.price = 100;
    a.atk = 100;
    b.price = 200;
    b.atk = 200;
    c.price = 300;
    c.atk = 300;
    head = &a;
    a.next = &b;
    b.next = &c;
    c.next = NULL;
    p = head;
    while(p != NULL){
        printf("%d,%d\n",p->price,p->atk);
        p = p->next;
    }
}


正在回答

3 回答

按我的理解结构体指针传递的应该是结构体的首地址,你把p++后指向的是12个字节后的地址,并非下一个节点的首地址,而是下一个节点的指针地址,肯定无法读出数据,你可以试试在创建结构体的时候将指针写在第一个位置,等同于结构体首地址,应该可以。

1 回复 有任何疑惑可以回复我~
#1

yunyulian 提问者

非常感谢!
2016-09-19 回复 有任何疑惑可以回复我~

没错啊,全复制编译后可正常运行!

0 回复 有任何疑惑可以回复我~

按我的理解结构体指针传递的应该是结构体的首地址,你把p++后指向的是12个字节后的地址,并非下一个节点的首地址,而是下一个节点的指针地址,肯定无法读出数据,你可以试试在创建结构体的时候将指针写在第一个位置,等同于结构体首地址,应该可以。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Linux C语言结构体
  • 参与学习       117897    人
  • 解答问题       162    个

C语言的深入,帮助小伙伴们进一步的理解C语言,赶紧看过来

进入课程

静态链表问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信