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语言结构体
118600 学习 · 166 问题
相似问题