C++学习笔记 第三课 const相关

学习笔记内容来自:狄泰软件学院 唐佐林老师 的视频,十分感谢您的指导

C语言中的const:

1.const修饰的变量是只读的,本质还是变量
2.const修饰的局部变量在栈上分配空间,所以可以用指针修改该空间的值而修改该const局部变量的值
3.const修饰的全局变量在只读存储区分配空间,修改值的话程序会崩溃
4.const只在编译期有用,在运行期无用

PS:C语言中定义真正意义上的常量,只能用enum枚举来定义,const不行

C++中的const:

1.当碰见const声明(不是const引用)时在符号表中放入常量(符号表是编译器内部的数据结构)
2.编译过程中若发现使用常量则直接以符号表中的值替换
3.编译过程中若发现下述情况则给对应的常量分配储存空间:(为了兼容C语言)
(1)该const常量为全局,且对const常量使用了extern
(2)对const常量使用&操作符

注意:C++编译器虽然可能为const常量分配空间,但不会使用其存储空间中的值

示例程序:

#include <stdio.h>

int main()
{
	const int c = 0;
	int* p = (int*)&c;

	*p = 5;

	printf("c = %d\n",c);//打印0,使用的是符号表里的值

	printf("*p = %d\n",*p);//打印5,使用的是c对应的内存空间的值

	return 0;
}
发布了15 篇原创文章 · 获赞 0 · 访问量 109

猜你喜欢

转载自blog.csdn.net/u012321968/article/details/104449807