typedef和#define的简单比较

1.通常说typedef比#define要好,尤其在有指针的情况下

  • typedef char* pStr1;
  • #define pStr2 char* 
  • pStr1 s1,s2;
  • pStr2 s3,s4;
  • 在上述的变量定义中,s1、s2、s3都被定义为char *,而s4则定义成了char,不是我们所预期的指针变量,根本原因就在于#define只是简单的字符串替换而typedef则是为一个类型起新名字。

2. typedef与结构结合使用

  • typedef struct tagMyStruct
  • {
  • int iNum;
  • long lLength
  • }MyStruct;
  • 在这里其实就是让‘struct tagMyStruct‘等于‘Mystruct‘
时间: 2024-12-16 04:49:30

typedef和#define的简单比较的相关文章

typedef和define具体的详细区别

1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错.例如: #define PI 3.1415926 程序中的:area=PI*r*r 会替换为3.1415926*r*r 如果你把#define语句中的数字9 写成字母g 预处理也照样带入. 2)typedef是在编译时处理的.它在自己的作用域内给一个已经存在的类型一个别名,但是You cannot use the typedef spec

typedef与#define的区别

1.  typedef typedef故名思意就是类型定义的意思,但是它并不是定义一个新的类型而是给已有的类型起一个别名,在这一点上与引用的含义类似,引用是变量或对象的别名,而typedef定义的是类型的别名.typedef的作用主要有两点: 1.1  简化复杂的类型声明 简化复杂的类型声明,或给已有类型起一含义明确的别名:如: typedef bool (*FuncPointer)(int, double); //声明了一个返回 bool 类型并带有两个(int和double)形参的函数的指针

typedef和define,const,struct和typedef struct

先看几个例子 (1) struct{ int x; int y; }test1; 好,定义了 结构 test1, test1.x 和 test1.y 可以在语句里用了. (2) struct test {int x; int y; }test1; 好,定义了 结构 test1, test1.x 和 test1.y 可以在语句里用了. 与 1 比,省写 了 test (3) typedef struct test {int x; int y; }text1,text2; 只说了 这种结构 的(类型

c++ typedef和define

1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错.例如:#define pi 3.1415926程序中的:area=pi*r*r 会替换为3.1415926*r*r如果你把#define语句中的数字9 写成字母g 预处理也照样带入. 2)typedef是在编译时处理的.它在自己的作用域内给一个已经存在的类型一个别名,但是You cannot use the typedef specifi

typedef与define 傻傻的分不清楚

今天看到 typedef与define的区别 上网搜了一下 总结一下 大部分内容出自百度知道,自己理解后又添了点.如发现不对,留言,大家一起研究一下 typedef int * pint ; #define PINT int * 那么: const pint p ;//p不可更改,但p指向的内容可更改 const PINT p ;//p可更改,但是p指向的内容不可更改.1.#define傻子一样的替换:#define 是宏命令,在编译前,由预处理器做替代,如同文本编辑的替代命令,把程序中的所有遇

typedef 和define的区别

typedef 和define的区别 总结一下typedef和#define的区别 1.概念 #define 它在编译预处理时进行简单的替换,不作正确性检查.它是预处理指令. typedef 它在自己的作用域内给一个已经存在的类型一个别名.它是在是在编译时处理的. 例子: #define: #define DO double DO val =5;//相当于 double va =5; #define FUN(X) X+5 int va = FUN(3); //相当于 va = 3+5 typed

Typedef和#define之间的区别

Typedef和define都可以用来给对象取一个别名,但是两者却有着很大不同. 1. 首先,二者执行时间不同 关键字typedef在编译阶段有效,由于是在编译阶段,因此typedef有类型检查的功能. Define则是宏定义,发生在预处理阶段,也就是编译之前,它只进行简单而机械的字符串替换,而不进行任何检查. #define用法例子: #define f(x) x*xmain( ){ int a=6,b=2,c: c=f(a) / f(b): printf("%d //n",c):}

typedef 与 define 的区别

1.区别 (1)定义.执行时间.作用域 定义.执行时间: #define pchar char * typedef char *pchar;     定义的格式差别,显而易见的,要注意,define 是不能存在分号的(文本替换),而typedef 是存在逗号的(类型的重命名).     同时,define 由预处理器进行处理,只做简单的文本替换的工作,不做任何检查(正确性检查.作用域检查.类型检查) typedef 是给一个已经存在类型的别名,在编译时候处理. 作用域:     define 只

typedef和#define的用法与区别

一.typedef的用法 在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像: typedef    int       INT;typedef    int       ARRAY[10];typedef   (int*)   pINT; typedef可以增强程序的可读性,以及标识符的灵活性,但它也有“非直观性”等缺点. 二.#define的用法 #define为一宏定义语句,通常用它来定义常量(包括无参量与带参量