A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Meniny 中级黑马   /  2014-8-19 03:35  /  2487 人查看  /  14 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Meniny 于 2014-8-19 03:40 编辑

只是关于typedef的总结,会用的飘过即可。

1、我们可以为基本数据类型定义别名
格式:
  1. typedef 类型名称 别名;
复制代码


示例:
  1. typedef int Integer;
  2. Interger i1 = 0;
  3. int i2 = 0;
复制代码


2、我们可以为指针类型定义别名
格式:
  1. typedef 类型名称* 别名;
复制代码


示例:
  1. typedef char* String;
  2. String c1 = "hello";
  3. char *c2 = "hallo";
复制代码


3、我们还可以为刚才的别名再次定义别名
格式:
  1. typedef 别名 新别名;
复制代码


示例:
  1. typedef int Integer;
  2. typedef Integer Number;
  3. int i1 = 0;
  4. Integer i2 = 1;
  5. Number i3 = 2;
复制代码


4、我们可以为结构体定义别名
格式:
  1. typedef struct 结构体名称
  2. {
  3.         ...;
  4. }别名;
复制代码

  1. typedef struct 结构体名称

  2. {
  3.         ...;
  4. };
  5. typedef struct 结构体名称 别名;
复制代码

  1. typedef struct
  2. {
  3.         ...;
  4. }别名;
复制代码


示例:
  1. typedef struct Students
  2. {
  3.         int age;
  4. } Stu;
  5. struct Students s1 = {1};
  6. Stu s2 = {2};
复制代码

  1. typedef struct Students
  2. {
  3.         int age;
  4. };
  5. typedef struct Students Stu;
  6. struct Students s1 = {1};
  7. Stu s2 = {2};
复制代码

  1. typedef struct
  2. {
  3.         int age;
  4. } Stu;
  5. Stu s1 = {1};
复制代码


5、我们可以为枚举定义别名
格式:
  1. typedef enum 枚举名称{成员1,成员2,...} 别名;
复制代码



  1. <div><span style="line-height: 2.2em;">typedef enum 枚举名称{成员1,成员2,...};</span></div><div><span style="background-color: rgb(247, 247, 247);">typedef enum 枚举名称 别名;</span></div>
复制代码



示例:
  1. typedef enum Gender{Male,Female} Sex;
  2. enum Gender g1;
  3. Sex s1;
复制代码

  1. typedef enum Gender{Male,Female};
  2. typedef enum Gender Sex;
  3. enum Gender g1;
  4. Sex s1;
复制代码


6、我们还可以为指向函数的指针定义别名
格式:
  1. typedef 类型名称 (*别名)(行参类型1,行参类型2,...);
复制代码


示例:
  1. typedef int (*Cal)(int,int);
  2. int sum(int a,int b)
  3. {
  4.         return a + b;
  5. }
  6. int minus(int a,int b)
  7. {
  8.         return a - b;
  9. }
  10. int main()
  11. {
  12.         //int (*p1)(int,int) = sum;
  13.         Cal p1 = sum;
  14.         //int (*p2)(int,int) = minus;
  15.         Cal p2 = minus;
  16.         return;
  17. }
复制代码


7、我们可以为结构体指针定义别名
格式:
  1. struct 结构体名称

  2. {
  3.         ...;
  4. };
  5. typedef struct 结构体名称 * 别名;
复制代码

  1. typedef struct 结构体名称
  2. {
  3.         ...;
  4. } * 别名;
复制代码


示例:
  1. struct Students

  2. {
  3.         int age;
  4. };
  5. typedef struct Students * Point;
  6. struct Students p = {20};
  7. sturct Students *p1 = &p;
  8. Point p2 = &p;
复制代码

  1. typedef struct Students
  2. {
  3.         int age;
  4. } * Point;
  5. struct Students p = {20};
  6. sturct Students *p1 = &p;
  7. Point p2 = &p;
复制代码


8、注意:
在某些场合下我们也可以使用宏定义来定义别名,例如下面代码:
  1. typedef int Integer;
  2. int main()
  3. {
  4.         int i1 = 0;
  5.         Integer i2 = 0;
  6.         return 0;
  7. }
复制代码


它的效果等同于:
  1. #define Integer int
  2. int main()
  3. {
  4.         int i1 = 0;
  5.         Integer i2 = 0;
  6.         return 0;
  7. }
复制代码


但这两种方法并不是在所有情况下都可以能得到同样的效果,例如:
代码一:
  1. typedef char * String;
  2. int main()
  3. {
  4.         String s1,s2;
  5.         return 0;
  6. }
复制代码


代码二:
  1. #define String char *;
  2. int main()
  3. {
  4.         String s3,s4;
  5.         return 0;
  6. }
复制代码


代码一中,s1与s2均为char *
代码二中,s3为char *,s4却为char。
这是因为#define只是将代码中的String全部替换为char *而已:
替换前:
  1. String s3,s4;
复制代码


替换后:
  1. char * s3,s4;
复制代码


替换后的代码等同于:
  1. char * s3;
  2. char s4;
复制代码




14 个回复

倒序浏览
好全面的样子。。。
回复 使用道具 举报
朱亚男 来自手机 中级黑马 2014-8-19 08:15:18
藤椅
不错!赞一个
回复 使用道具 举报
问问楼主这个程序是怎么插入的啊?我一直都是复制张贴
回复 使用道具 举报
★Joean_Zhou 发表于 2014-8-19 09:05
问问楼主这个程序是怎么插入的啊?我一直都是复制张贴

插入?代码么?编辑器的工具离有代码工具的
回复 使用道具 举报
LZ很辛苦啊 敲了很多代码
回复 使用道具 举报
曹雨 中级黑马 2014-8-21 05:14:59
7#
★Joean_Zhou 发表于 2014-8-19 09:05
问问楼主这个程序是怎么插入的啊?我一直都是复制张贴

看到你菜鸟不容易啊,哈哈哈哈。记得打球叫我。我很菜求带
回复 使用道具 举报
曹雨 发表于 2014-8-21 05:14
看到你菜鸟不容易啊,哈哈哈哈。记得打球叫我。我很菜求带

嘿嘿,篮球我也是个菜鸟呢,,很差劲的说,不过呢可以陪你练习练习!哈哈。。。你去北京了吗
回复 使用道具 举报
曹雨 中级黑马 2014-8-21 09:15:38
9#
★Joean_Zhou 发表于 2014-8-21 08:25
嘿嘿,篮球我也是个菜鸟呢,,很差劲的说,不过呢可以陪你练习练习!哈哈。。。你去北京了吗 ...

没呢。打算九月底去,你呢?
回复 使用道具 举报
     楼主  真辛苦,   敲了这么多的代码
回复 使用道具 举报
神贴!!!点赞
回复 使用道具 举报
总结得很全面啊!  收藏啦
回复 使用道具 举报
曹雨 发表于 2014-8-21 09:15
没呢。打算九月底去,你呢?

嘿嘿。我也是,九月底去。。。
回复 使用道具 举报
你总结的很不错
回复 使用道具 举报
呵呵,不错哦。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马