const
C++中的const:
1.const修饰的局部变量赋值常量时,局部变量保存在符号表中,修改不了,是一个常量
2.const修饰的全局变量保存在常量区,不能被修改
3.const修饰的全局变量默认是内部链接属性,加上extern就变成外部链接属性。
const单词字面意思为常数,不变的,它是C/C++中的一个关键字,是一个限定符,它用来限定一个变量不允许改变,它将一个对象转换成一个常量
const int a = 10;
a = 100;//编译错误const限定一个变量不允许改变
C语言中的const:
1.const修饰的局部变量,存在栈区,虽然不能通过const修饰的变量区修改栈区的内容,但是可以通过地址区修改。
2.const修饰的全局变量是保存在常量区,不能通过变量名区修改,也不能通过地址去修改
3.const修饰的全局变量,如果想在其他文件使用,则可直接extern声明外部可用即可
#include<stdio.h>
void test03()
{
extern const int num;//声明是外部可用的
printf("num = %d\n",num);
}
const int b = 10;//const修饰的全局变量保存在常量区
//const修饰的全局变量
void test02() {
int *p = &b;
*p = 100;//错误的,不能修改常量区的内容
printf("%d\n", b);
}
//const修饰的局部变量
void test01() {
//在C语言中const修饰的变量保存在栈区
const int a = 10;
//a = 100;
int *p = &a;
*p = 100;
printf("%d\n", a);
}
int main()
{
test01();
test02();
test03();
return 0;
}
C++中的const:
#include<iostream>
using namespace std;
//const修饰的全局变量
void test03()
{
extern const int num;
cout << num << endl;
}
const int b = 1;
void test02()
{
//const修饰的全局变量存在常量区
//b = 100;
int *p = (int *)&b;
*p = 100;//错误的
cout << b << endl;
}
void test01()
{
//C++中的const修饰的局部变量
const int a = 10;
//a = 100;
int *p = (int *)&a;
//C++中的const修饰的局部变量保存在了符号表中
//当对const修饰的局部变量取地址是,编译会产生一个临时变量来保存a的地址
*p = 100;
cout << a << endl;
}
int main()
{
test03();
return 0;
}
extern const int num = 1;//const修饰的全局变量默认修饰的是内部链接属性,加上extern就可以变成外部链接属性。