链表中指针类型转换的问题
有个问题 假设一个链表头结点类型a 链表结点类型b
假设结构体:
struct b{float a;struct b *prev,*next;};
struct a{int a; struct b *next;};
a有成员head b有成员mid, end
很简单的程序如下
int main(int argc, char *argv[]){
struct a head;
struct b mid,end;
head.a=99;
head.next=∣
mid.prev=&head;
mid.next=&end;
end.prev=∣
end.next=NULL;
printf("%d\n",end.prev->prev->a);
return 0;
}
结果是无法打印出99 虽然mid的前指针类型和实际指向的类型不对应 但我记得指针存的是地址 无所谓类型 只要用的时候强制转换一下 然后用printf("%d\n",(struct a*)(end.prev->prev)->a); 来代替
我比较了下head和end.prev->prev的地址 都是一样的
也就是说 指针指的是对的 我觉得应该就是类型转换的问题
debug了下 显示就是类型转换的问题 int 被转换成float。。
但强制转换了程序又通不过。。。
应该是语法问题 所以请教下