总结一下在非类中使用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…
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用法 1. 定义简单的常数:定义常量,便于修改 #define N 1000 2. 定义简单的函数:注意多使用括号 define可以像函数那样接受一些参数,如下: #define max(x,y) (x)>(y)?(x):(y) 这个定义就将返回两个数中较大的那个,看到了吗?因为这个“函数”没有类型检查,就好像一个函数模板似的,当然,它绝对没有模板那么安全就是了.可以作为一个简单的模板来使用而已.但是这样做的话存在隐患,例子如下: #define Add(a,b) a+b; 在一般…
总结: 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:定义预编译时处理的宏:…
在iOS开发中经常遇到一些字段和类型的定义,例如配置生产和测试不同环境的参数等,这时候经常用到#define.const以及typedef.那么它们之间有什么区别呢?我们接下来一个一个具体了解下. 一.基本概念 1.1.#define #define并不是定义全局变量,而是宏定义.也就是说并不是真正意义上的定义变量,而是用来做文本替换.当程序开始运行时,编译器会先将代码中的MAX全部替换为100,然后再进行编译.由此可得,#define并不是在编译过程中进行,而是在预编译阶段进行. #defin…
typedef和define的详细区别 2011-04-19 15:11 firnow firnow 字号:T | T 对于都可以用来给对象取一个别名的Typedef和define来说,是有区别的.本文通过对typedef和define的介绍,来给读者详细的讲解它们存在的本质区别,供参考. AD:51CTO学院:IT精品课程在线看! typedef是一种在计算机编程语言中用来声明自定义数据类型,配合各种原有数据类型来达到简化编程的目的的类型定义关键字. #define是预处理指令.下面让我们一起…
宏定义#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则定义…
define: 发生在预处理阶段,也就是编译之前,仅仅文本替换,不做任何的类型检查 没有作用域的限制 typedef: 多用于简化复杂的类型声明,比如函数指针声明:typedef bool (*funcPoiinter) (int, double); 给已有类型定义一个别名(类似的 引用是给已有对象或者变量一个别名) 在编译阶段有效,具有类型检查的功能 定义域平台无关的数据类型.比如:size_t 有自己的作用域(函数内定义只能函数内部使用) 对指针的修饰作用不同: typedef int *…
typedef unsigned long long weiboId; typedef 定义一个使用方便的类型,谓之为“宏定义“. unsigned long long 是一种无符号的长长整型.本应该是这样,unsigned long long int ,这里省略了int ,编译器会自动认可. unsigned long long ,是64 位的数据,8 个字节,无符号,取值范围从0 到2 的64 次方-1 . unsigned long ,是32 位的数据,4 个字节,无符号,取值范围从0 到…