鱼C论坛

 找回密码
 立即注册
查看: 3925|回复: 5

真心真心不懂typedef和define的区别

[复制链接]
发表于 2012-8-25 20:26:34 | 显示全部楼层 |阅读模式
1鱼币


#define PIN1 char*
typedef char* PIN2;


PIN1     x, y;
PIN2     a,b;


这个想了一天都搞不懂啊

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-8-25 20:37:22 | 显示全部楼层
#define就是简单的字符串替换
PIN1 x, y; 变成了 char* x, y; ,所以x是指针类型,y是字符型
typedef相当于声明一种新类型
PIN2 a,b;,相当于a和b都是PIN2类型的,也就都是char*类型的,2个都是指针类型
还不明白可以搜一下《C语言深度剖析.-.解开程序员面试笔试的秘密》,第1.17有详细的介绍
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-8-25 21:03:08 | 显示全部楼层
LZ 解释的很清楚了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-8-26 16:42:27 | 显示全部楼层
这两个如果是在一个程序段中实际是没有什么差别的,关键就在于当你应用了多个程序段的时候他们的作用就凸现出来了,当在不同源文件中用到同一类型的数据时,常用typedef声明一些数据类型,把他们单独放在一个头文件中,然后在需要用到他们的文件中用#include命令把它们包含进来,提高编程效率。并且使用typedef可以有利于程序的通用与移植。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-8-26 19:16:12 | 显示全部楼层
define仅仅做文字替换,而typedef不仅仅做文字替换,见下面的例子
  1. typedef int Vec[5];

  2. int main(void){
  3.         Vec v1;//等价于int v1[5]
  4.                         //这个用define做文字替换就不行
  5.         return 0;
  6. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-8-26 23:40:58 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-14 19:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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