const和#define的区别

传智扫地僧课程学习笔记。


C中const是只读的,

C++中const是常量,


连续定义3个变量,打印变量地址,通过地址号,可以看出来内存分配时机,


const替换#define的一个方法,


int a = 10;

int b = 20;

int array[a+b];

这样写c和c++中都不支持,

linux中的gcc支持,

通过使用const修饰a,b之后就能通过,

因为const是在编译处理阶段处理的语法,


#define也可以达到相同的效果,

不同的是,

宏定义是在预处理阶段进行的,单纯的文本替换,不在五行之中,故没有作用域限制,

const是在编译器中处理的,提供类型检查和作用域检查,

void fun1()
{
	#define a 10
	const int b = 20;
	//#undef  a 
	//# undef
}

void fun2()
{
	printf("a = %d\n", a);
	printf("b = %d\n", b);
}

int main()
{
	fun1();
	fun2();
	return 0;
}
#define a 10

#undef a //卸载宏定义a

#undef //卸载所有宏定义


printf(“%d”, 10);

我还以为不能输出呢,

实际能输出,结果是10,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值