|
|
发表于 2005-9-11 14:13:04
|
显示全部楼层
Post by Illidan
不会吧,楼顶帖的代码是复制来的,如果写错了这里也能看得出来,hoho
- typedef struct node
- {
- void* element;
- struct node* next;
- } node_t;
- typedef struct
- {
- node_t* head;
- node_t* rear;
- int num_node;//how many nodes
- } field_list_t;
- int main()
- {
- field_list_t* list;
- node_t* ptr;
- node_t* first;
- node_t* second;
- node_t* third;
- node_t* fourth;
- node_init(&first);
- node_init(&second);
- node_init(&fourth);
- int a = 1, b = 2, c = 3, d = 4;
- int temp;
- first->element = &a;
- second->element = &b;
- third->element = &c;
- fourth->element = &d;
- list_init(&list);/*是不是这句有问题,list已经是指针了,还取它地址干什么?很少见到这样的用法。一般好像是定义field_list_t list,然后list_init(&list)初始化一个空的链表的头结点*/
- list_add( list, first, 0);
- list_add( list, second, 0);
- list_add( list, third, 0);
- list_add( list, fourth, 3);
- /****************/
- temp = list->num_node;
- printf( "number of nodes: %d\n", temp);
- /*****************/
- ptr = list->head;
- temp = * (int*)ptr->element;
- printf( "first node in the list is known as : %d\n", temp );
- ptr = ptr->next;
- temp = * (int*)ptr->element;
- printf( "second node in the list is known as : %d\n", temp );
- ptr = ptr->next;
- temp = * (int*)ptr->element;
- printf( "third node in the list is known as : %d\n", temp );
- }
复制代码
我把代码贴到这里时发现了出错的原因,hoho。让大家作为游戏找找吧。
不过,我还是很奇怪,temp既然有值,为什么seg fault出在printf那句呢?
field_list_t* list;
list_init(&list);/*是不是这句有问题,list已经是指针了,还取它地址干什么?很少见到这样的用法。一般好像是定义field_list_t list,然后list_init(&list)初始化一个空的链表的头结点*/ |
|