typedef和define的区别

原创 2015年11月20日 17:29:19

1.概念

  #define 它在编译预处理时进行简单的替换,不作正确性检查。它是预处理指令。

  typedef 它在自己的作用域内给一个已经存在的类型一个别名。它是在是在编译时处理的。


#define:

#define DO double
DO val =5; //相当于 double va =5;


typedef:  

复制代码
typedef double D;//就是给double起一个别名D
D val;//相当于是double val

//用dypedef定义数组
typedef double arr[3];//arr就是一个长度为3的double类型数组
arr arr1;   //相当于 double arr1[3]

2.区别

  执行时间不一样
    #define 是在预处理阶段,也就是在编译之前进行替换工作
    typedef 是在编译阶段,会进行类型检查

  作用域不同
    #define 无论在哪定义过,在其它的地都可以使用
    typedef 只能在定义的作用域内使用

  对指针的操作不一样

复制代码
#define PINT int *
    typedef int * pint;

    int a =3;
    int b =5;
    const pint p1=&a; //相当于 int * const p1;  p1 不可以更改但指向的内容能被修改
    *p1=1;
    p1=&b;  //error
    const PINT p2 =&a;//相当于 const int * p2;  p2 可以被修改但指向的内容不可以修改
    p2=&b;
    *p2=1;  //error
复制代码

 



版权声明:本文为博主原创文章,未经博主允许不得转载。

typedef和#define究竟有什么区别?

typedef int * int_ptr ; 与#define int_ptr int * 作用都是用int_ptr代表 int * ,但是二者不同,正如前面所说 ,#define在预处理 时进行...
  • Pwiling
  • Pwiling
  • 2015年08月16日 21:20
  • 1250

详解typedef用法及define的区别

1.typedef语法描述      在现实生活中,信息的概念可能是长度、数量和面积等。在C语言中,信息被抽象为int、float和double等基本数据类型。从基本数据类型名称上,不能看出其所代表的...
  • xiao3404
  • xiao3404
  • 2014年03月28日 17:26
  • 1677

C++中define与const的区别

C++中不但可以用define定义常量还可以用const定义常量,它们的区别如下: 用#define MAX 255定义的常量是没有类型的,所给出的是一个立即数,编译器只是把所定义的常量值与所定义的常...
  • yingyujianmo
  • yingyujianmo
  • 2016年04月21日 10:20
  • 3816

define与typedef 区别

  • 2014年07月29日 00:12
  • 15KB
  • 下载

typedef和#define的用法与区别(是我转来的,但是确确实实是我碰到的问题,能把他吃透也就是我自己的东西啦)

一、typedef的用法在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像:typedef    int       IN...
  • nogoodnobad
  • nogoodnobad
  • 2011年02月23日 19:52
  • 180

typedef和#define的用法与区别

一、typedef的用法在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像:typedef    int       IN...
  • goodai007
  • goodai007
  • 2011年02月18日 17:10
  • 317

C语言中的typedef(包含与#define的区别)

今天在做一个编程练习的时候,想要
  • u011446018
  • u011446018
  • 2014年05月19日 16:12
  • 410

typedef和#define究竟有什么区别?

typedef int * int_ptr ; 与#define int_ptr int * 作用都是用int_ptr代表 int * ,但是二者不同,正如前面所说 ,#define在预处理 时进行...
  • Pwiling
  • Pwiling
  • 2015年08月16日 21:20
  • 1250

typedef的用法好处及与#define的区别

typedef的用法好处及与#define的区别 #include "stdafx.h" #if 0 ----typedef的使用步骤: typedef typer name; 起别...
  • SwordArcher
  • SwordArcher
  • 2017年11月15日 20:21
  • 74

结构体,共用体,typedef与define的区别,链表

首先自己发现的一点不懂的 定义:字符的赋值  char a='A';                   char a[10]="A";   结构体: 1:结构体是一种构造数据类型, 2:结构体里...
  • laofengge
  • laofengge
  • 2016年08月16日 19:28
  • 304
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:typedef和define的区别
举报原因:
原因补充:

(最多只允许输入30个字)