LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 825|回复: 1

问一个有关typedef的问题

[复制链接]
发表于 2006-7-12 12:48:08 | 显示全部楼层 |阅读模式
我在看一个c语言写的软件的源码,里面有几个文件是实现数据结构的..其中有list.h list.c这两个文件实现链表.别的地方都很好懂..就是有一处实在看不明白了.
list.h:
  1. #ifndef __list_h_
  2. # define __list_h_        1

  3. struct list_element_s;
  4. typedef struct list_s {
  5.         struct list_element_s *head;
  6. } list_t;

  7. /*
  8. * The function type for iterating over elements.
  9. */
  10. [color="Red"]typedef int (*list_iterator_t) (void *, void *);[/color]

  11. void list_init(struct list_s *list);
  12. void list_insert(struct list_s *list, const void *data, const char *key);
  13. const void *list_find(struct list_s *list, const char *key);
  14. void list_delete(struct list_s *list, const char *key);
  15. void list_foreach(struct list_s *list, list_iterator_t iter, void *data);
  16. void list_done(struct list_s *list);

  17. #endif /* __list_h */
复制代码


list.c:

  1. ........

  2. /*
  3. * Calls a given function for each element of the list.
  4. */
  5. void list_foreach(struct list_s *list, list_iterator_t iter, void *data) {
  6.         struct list_element_s *element;

  7.         for (element = list->head; element &&
  8.                         [color="Red"]iter((void *) element->data, data);[/color]
  9.                         element = element->next);
  10. }
  11. ........
复制代码

那个iterator本质上是什么东西呢? :ask
发表于 2006-7-12 13:58:47 | 显示全部楼层
list_iterator_t 是一个函数指针的 typedef ,
用 [php]list_iterator_t iter;[/php] 这样申明 iter 后,就相当于这样申明iter: [php]int (*iter)(void *, void *);[/php]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表