A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© godlike 中级黑马   /  2014-4-29 17:22  /  2237 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 godlike 于 2014-5-14 14:13 编辑

c语言中的宏定义:#define COUNT 4
和全局变量:int  a = 4;//定义在函数外部,文件的开头;
有区别吗,分别用在什么场合,还有宏定义没有说明数据类型,那么它的数据类型是如何确定的;

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 兰闻天 于 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,应该是这样

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
#define COUNT 4把count 定义为4,见到count就是4,可以用#undef取消宏定义的作用,int  a = 4是全局变量本文件都可以用的。#define COUNT 4 这个4不是告诉你类型了吗!
回复 使用道具 举报
  1. #define COUNT 4    //预编译指令,在源文件编译之前,会把源文件中所有COUNT换成4
  2. int a = 4;
  3. int m[COUNT];     //这种定义在编译是不会报错,因为在编译之前已经变为int a[4]
  4. int m[a];               //这种定义编译是会出错,因为数组个数不能是变量
复制代码


至于#define COUNT 4 这句宏定义之后4的数据类型,可以参照你直接在souce里面写的其他数字,比如i = 0之类的,他们都是int类型的

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马