c++的const和c的const的区别

c++的const和c的const的区别,第1张

c语言const常量,只能避免直接修改 *** 作,无法避免指针地址间接 *** 作。

#include 

void main(){
	const int num = 100;
	//int a[num];//X 
	*(int *)&num = 4;
	printf("%d",num);//4;
}

c++编译器会将放入数组的const变量直接替换成常量,类似#define。而如果const变量用已经赋值的变量赋值,则编译器会认为赋值的为变量,而不进行优化。

#include 
void main(){
	const int num = 10;
	int a[num];//c++编译器会把num替换成10
	cout<<sizeof(a)<<endl;//40

	const int n = num;
	//int b[n];//X 会报错,c++编译器不敢乱优化

	const int num2 = 100;
	*(int *)&num2 = 4;
	cout<<*(&num2)<<endl;//100 c++编译器强行优化,从寄存器里读内存
	cout<<num2<<endl;//100

	int b = 10;
	const int num3 = b;//变量
	*(int *)&num3 = 4;//c++编译器不敢乱优化,num3不替换成变量b
	cout<<*(&num2)<<endl;//4
	cout<<num2<<endl;//4
}

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/713542.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-24
下一篇 2022-04-24

发表评论

登录后才能评论

评论列表(0条)

保存