趣学 C 语言(二)—— typedef 与 #define

来源:互联网 发布:android网络状态监听 编辑:程序博客网 时间:2024/05/24 07:09

#define:宏文本替换(其实 #define 宏定义十分十分简单,就是做文本替换);
typedef:彻底的封装类型;

  • (1) 可用其他类型说明符对宏类型名进行拓展,但对 typedef 所定义的类型名却不能这么做

    #define peach intunsigend peach i;       // 没问题typedef int banach;unsigned banach i;      // 错误!非法
  • (2) 在连续几个变量的声明中,用 typedef 定义的类型能够保证声明中所有的变量均为同一种类型,而用 #define 定义的类型却无法保证

    #define int_ptr int *int_ptr chalk, cheese;                    // int *chalk, cheese;typedef char * char_ptr;char_ptr c1, c2;

1. 对 typedef 使用的认识

struct A;typedef struct A* B;

在命名上 A:考虑的是其底层数据结构,B:考虑的则是其使用上的意义。
比如优先队列一般通过二叉堆实现。

struct BinHeap;typedef struct BinHeap* PriorityQueue;

在实现对 HashTable 的类型声明时:

struct ListNode;typedef struct ListNode* Position;typedef Position List;struct HashTbl;typedef struct HashTbl* HashTable;
0 0
原创粉丝点击