黑马程序员技术交流社区
标题:
c中得全局变量和宏定义的区别是什么
[打印本页]
作者:
godlike
时间:
2014-4-29 17:22
标题:
c中得全局变量和宏定义的区别是什么
本帖最后由 godlike 于 2014-5-14 14:13 编辑
c语言中的宏定义:#define COUNT 4
和全局变量:int a = 4;//定义在函数外部,文件的开头;
有区别吗,分别用在什么场合,还有宏定义没有说明数据类型,那么它的数据类型是如何确定的;
作者:
兰闻天
时间:
2014-4-29 17:30
本帖最后由 兰闻天 于 2014-4-29 17:32 编辑
首先 未带参的宏定义的是基本上是常量,#define COUNT 4意思是在书写的时候把4用COUNT书写,等编译之前在把所有的COUNT替换成4;
int a = 4;定义的a是个变量;是在编译过程中把a替换成的4;
在定义数组和字符串的时候,char array[a]="abc";这么写是错误的,因为定义数组和字符串初始化的时候,数组个数不能是变量;而char array[COUNT]="abc";是可以这么写的,因为在未编译之前COUNT已经换成4了宏的数据类型,是根据定义时的值确定的,#define COUNT 4 数据类型就是int,应该是这样
作者:
魅影穿眸
时间:
2014-4-29 17:30
#define COUNT 4把count 定义为4,见到count就是4,可以用#undef取消宏定义的作用,int a = 4是全局变量本文件都可以用的。#define COUNT 4 这个4不是告诉你类型了吗!
作者:
NenKeer
时间:
2014-4-29 20:57
#define COUNT 4 //预编译指令,在源文件编译之前,会把源文件中所有COUNT换成4
int a = 4;
int m[COUNT]; //这种定义在编译是不会报错,因为在编译之前已经变为int a[4]
int m[a]; //这种定义编译是会出错,因为数组个数不能是变量
复制代码
至于#define COUNT 4 这句宏定义之后4的数据类型,可以参照你直接在souce里面写的其他数字,比如i = 0之类的,他们都是int类型的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2