#define const typedef】的更多相关文章

#define用法 1. 定义简单的常数:定义常量,便于修改 #define N 1000 2. 定义简单的函数:注意多使用括号 define可以像函数那样接受一些参数,如下: #define max(x,y) (x)>(y)?(x):(y) 这个定义就将返回两个数中较大的那个,看到了吗?因为这个“函数”没有类型检查,就好像一个函数模板似的,当然,它绝对没有模板那么安全就是了.可以作为一个简单的模板来使用而已.但是这样做的话存在隐患,例子如下: #define Add(a,b) a+b; 在一般…
总结一下在非类中使用const关键字定义常量时的初始化问题,亲测VS2015.顺便记录#define宏和typedef的区别. 1 首先对const声明的常量的初始化做简单小结: , w2 = , w3 = ; int * const p1 = &w1, P1_1; //p1:指针常量,指针是常量; //p1_1:int型变量 ; //p2:常量指针,指向常量的指针; //p2_2:int const型 ; //p3:常量指针,指向常量的指针: //p3_3:const int型 ; //tem…
#define(宏定义)只是简单的字符串代换(原地扩展),它本身并不在编译过程中进行,而是在这之前(预处理过程)就已经完成了. typedef是为了增加可读性而为标识符另起的新名称(仅仅只是个别名),它的新名字具有一定的封装性,以致于新命名的标识符具有更易定义变量的功能,它是语言编译过程的一部分,但它并不实际分配内存空间. 一般都遵循#define定义“可读”的常量以及一些宏语句的任务,而typedef则常用来定义关键字.冗长的类型的别名. typedef是语句( 以':'结尾),而#defin…
1.#define define是预处理指令,在编译时不进行任何检查,只进行简单的替换 宏定义的一般形式为: #define 宏名 字符串 这里所说的字符串是一般意义上的字符序列,不要和C语言中的字符串等同,它不需要双引号. 2.typedef typedef是在C语言中用来为复杂的声明定义简单的别名,它本身是一种存储类的关键字,与auto.extern.mutable.static.register等关键字不能出现在同一个表达式中. typedef取别名的一般形式为: typedef 旧名字…
define和typedef的区别 define是单纯的字符替换,typedef是重新定义了新的类型 #include <stdio.h> #define CHAR1 char* typedef char* CHAR2; int main(){ char c = 'a'; CHAR1 pc1,pc2;//pc1是char指针,但pc2是char pc1 = &c; pc2 = c; *pc1 = 'w'; printf("%c ", c); CHAR2 pc3,pc…
define完全可以理解替换,typedef代表别名.听着差不多的意思,那2者区别在哪? 先来个简单例子查看基本使用. //define和typedef区别 #define DB double //替换 define 被替换的内容 替换的内容 typedef double db; //别名 typedef 原来的类型名 新的别名 //typedef需要分号 ,typeof 去掉以后符合语法规则,define去掉就会报错 void main() { //看不出区别 DB d1 = 1.2,d2=1…
1.#define:预编译指令,在预编译的时候,进行文本替换. 2.typedef:编译时处理,为类型取一个别名. 3.#define与typedef的顺序是相反的,记住typedef就行了.typedef为类型取一个别名,前面是真名,后面才是别名. 4.避免使用#define,因为#define只是简单的文本替换,替换后,会出现优先级,以及组合成其他的词,不可预知.…
1.C语言规定只有相同类型的指针才可以相互赋值. Void*指针作为左值用于接收任意类型的指针, void*指针作为右值赋给其他指针时需要强制类型转换. 2.在C语言中Const修饰的变量是只读的,本质还是变量. 口诀:左数右指  不可改变: 当Const出现在*号左边时,指针指向的数据为常量. 当Const出现在*号右边时,指针本身为常量. const int* p ; //P可变,P指向的内容不可变 int const * p; //跟上一句一样 int *const p; //p不可变,p…
typedef和define的详细区别 2011-04-19 15:11 firnow firnow 字号:T | T 对于都可以用来给对象取一个别名的Typedef和define来说,是有区别的.本文通过对typedef和define的介绍,来给读者详细的讲解它们存在的本质区别,供参考. AD:51CTO学院:IT精品课程在线看! 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 spe…
宏定义#define pStr char*  ,是直接把程序中出现pStr的地方替换成char* ,直接替换: typedef  char * pStr; 是给char*定义一个别名叫做 pStr; 题目一 通常讲,typedef要比#define要好,特别是在有指针的场合.请看例子: typedef char *pStr1; #define pStr2 char *; pStr1 s1, s2; pStr2 s3, s4;在上述的变量定义中,s1.s2.s3都被定义为char *,而s4则定义…
总结: const用于代替#define一个固定的值,inline用于代替#define一个函数.是#define的升级版,为了消除#define的缺陷. 参考内容:http://www.cnblogs.com/iloveyoucc/archive/2012/03/18/2404658.html http://www.pconline.com.cn/pcedu/empolder/gj/c/0503/563879.html #define和inline 的区别 define:定义预编译时处理的宏:…
1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错.例如: #define PI 3.1415926 程序中的:area=PI*r*r 会替换为3.1415926*r*r 如果你把#define语句中的数字9 写成字母g 预处理也照样带入. 2)typedef是在编译时处理的.它在自己的作用域内给一个已经存在的类型一个别名. 3)typedef int * int_ptr;与#define…
define: 发生在预处理阶段,也就是编译之前,仅仅文本替换,不做任何的类型检查 没有作用域的限制 typedef: 多用于简化复杂的类型声明,比如函数指针声明:typedef bool (*funcPoiinter) (int, double); 给已有类型定义一个别名(类似的 引用是给已有对象或者变量一个别名) 在编译阶段有效,具有类型检查的功能 定义域平台无关的数据类型.比如:size_t 有自己的作用域(函数内定义只能函数内部使用) 对指针的修饰作用不同: typedef int *…
一.#define #define 是宏定义命令,宏定义就是将一个标识符定义为一个字符串,源程序中的该标识符均以指定的字符串来代替,是预编译命令,因此会在预编译阶段被执行 1.无参宏定义 无参宏的宏名后不带参数 其定义的一般形式为: #define  标识符  字符串 其中的"#"表示这是一条预处理命令.凡是以"#"开头的均为预处理命令."define"为宏定义命令."标识符"为所定义的宏名."字符串"可以…
#define 为完全的替换 typedef 重新定一个数据类型 eg #define charp1 char* typedef char* charp2charp1 a,b; //a char* b char charp2 c,d; //c char* d char* 由于typedef重新定义了一个类型,所以c,d都为char* #define 将charp1 直接替换位 char *  等价与 char * a,b;所以b为char…
(1) 编译器处理方式不同 define宏是在预处理阶段展开. const常量是编译运行阶段使用. (2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开. const常量有具体的类型,在编译阶段会执行类型检查. (3) 存储方式不同 define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存. const常量会在内存中分配(可以是堆中也可以是栈中). (4)const可以节省空间,避免不必要的内存分配 const定义常量从汇编的角度来看,只是给出了对应的内存…
#define定义“可读”的常量以及一些宏语句的任务,而typedef则常用来定义关键字.冗长的类型的别名.…
将父类中的常量放到. m文件,子类就不会重复包含了.之后再.h文件中用extern NSSting * const ILScoreShowStartTime;// extern 用来声明变量和函数.const用来声明简单的常量,而#define可以声明复杂的常量,例如[NSString stringWith:@"dkdkdk"](const 不行)…
typedef的应用 typedef是在计算机编程语言中用来为复杂的声明定义简单的别名. 下面的代码定义了一些常见类型的别名 typedef int INT; typedef unsigned int UINT; typedef unsigned int *PUINT; windows通常定义结构体的同时会定义结构体的别名,下面的代码定义了tagPAINTSTRUCT结构体,同时给了定义PAINTSTRUCT别名以及指针类型的别名PPAINTSTRUCT等. typedef struct tag…
预处理就是讲一些头文件展开. 预处理还会将使用到宏定义的值替换为真正的值.宏只是单纯的字符串的替换. #define 宏定义 眼里没有语法,不用分号结尾. typedef 定义别名,是有语法的,要用分号结尾.typedef经过预处理之后不会被替换掉.还有一个区别是,define定义了之后,可以在任何位置使用.typedef则有作用域. define通常用于定义一些常量. typedef 通常用于定义一些别名.…
这里很容易搞混: tyepdef double dou;//这里是dou是double的别名 #include<iostream> using namespace std; int main() { typedef char *pstring; //pstring实际上是指向char的指针. const pstring cstr = 0; //cstr 是指向char 的常量指针 const pstring *ps; //ps是一个指针,他的对象是指向char的常量指针 const char…
#define PI 3.1415926 #define是将数值进行定义(语法上也可以定义类型但不建议这么做,具体下面问题说) typedef int Data; rypedef是对类型进行定义 注意:他们俩数据的先后顺序和带不带引号 在什么类型下他们俩定义的变量是明显不同的? #include<stdio.h> #define Data1 int* typedef int* Data2; int main() { Data1 a, b; Data2 c, d; return 0; } 上述代…
#define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错. 所以define后加分号,不然会把分号也会一起替换. typedef 是一个保留字,编译的时候告诉编译器,后面的两个词是同义词,采用如同定义变量的方法那样来声明一种类型.…
define定义全局常量: define('PATH', '/data/home/www'); const也是定义常量, 一般用于类中, 饰成员属性,不可以修饰方法,如下: class Test{ const PATH = 'c/';//修饰常量 const function test(){//这种方法是错误的,const无法修饰方法 } } 在类外部调用的时候, 不用加 $ 号: echo Test::PATH; //也可以使用下面的方法调用 $test = new Test(); echo…
2014腾讯实习生笔试(广州站)第26题填空题: #define MAX_NUM 1000+1 int Temp = Max_NUM*10; 则Temp的值为( ) 答案是:1010, 由于宏定义仅仅是一个简单的文本替换.替换后Tem==1000+1*10,故temp=1010,而不是想象中的10010.如想真正表达预想含义.须要加个括号:#define MAX_NUM (1000+1) ,如此的话,结果为10010 #include<iostream> using namespace std…
替换时机 #define :预编译阶段简单替换,编译阶段展开源程序(1.词法扩展==程序生成期间的字符串替换 2.语义扩展==生成特定指令) 枚举常量:编译阶段确定其值 内联函数:编译阶段插入代码 typedef:关键字,编译时处理…
什么是有效数字? ------------------------- 数据类型 运算符: 函数: 程序结构: 存储结构 内存管理 关键字: ------------------------- C语言: 我认为编程就是对数据操作 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx数据类型xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 基本数据类型:原子数据类型是最小数据单元: 空类型:是所有数据类型的基础. 构造数据类型:在基本数据类型的基础…
关键字:sizeof .#define.typedef.const.static.register.extern sizeof 1. 作用:求数据所占得内存空间大小 2. 本质:求数据得类型所占的内存空间大小 3. 格式:size_t sizeof(数据) 4. 返回值:数据所占的内存空间大小,单位:字节 #include<stdio.h> int main() { char a ='A' + 1; int len; len = sizeof(a); printf("%d\n&quo…
小结: 1. typedef并没有创建一个新类型,它只是为某个已存在的类型增加了一个新的名称而已: 2. typedef声明也没有证据新的语义:通过这种方式声明的变量与通过普通方式声明的变量具有完全相同的属性: 3. 类似于#define,但typedef是由编译器解释的,因此它的文本替换供功能要超过预处理器的功能: 4. typedef可以使程序参数化,提高程序的可移植性.如果typedef声明的数据类型同机器有关,那么,当程序移植到其他机器上时,只需该表typedef类型定义就可以了. 一个…