yunyulian
2016-07-17 11:17
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; } }
按我的理解结构体指针传递的应该是结构体的首地址,你把p++后指向的是12个字节后的地址,并非下一个节点的首地址,而是下一个节点的指针地址,肯定无法读出数据,你可以试试在创建结构体的时候将指针写在第一个位置,等同于结构体首地址,应该可以。
没错啊,全复制编译后可正常运行!
按我的理解结构体指针传递的应该是结构体的首地址,你把p++后指向的是12个字节后的地址,并非下一个节点的首地址,而是下一个节点的指针地址,肯定无法读出数据,你可以试试在创建结构体的时候将指针写在第一个位置,等同于结构体首地址,应该可以。
Linux C语言结构体
118294 学习 · 162 问题
相似问题