c语言和c++的const的区别

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
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
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就可以变成外部链接属性。

你可能感兴趣的:(c++,c语言,算法)