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

相关推荐
你的冰西瓜11 分钟前
C++动态规划入门指南——助力CSP竞赛夺冠
c++·动态规划
小此方11 分钟前
C语言自定义变量类型结构体理论:从初见到精通(上)
c语言·开发语言
西阳未落2 小时前
LeetCode——双指针
c++·算法
胖咕噜的稞达鸭2 小时前
C++中的父继子承:继承方式实现栈及同名隐藏和函数重载的本质区别, 派生类的4个默认成员函数
java·c语言·开发语言·数据结构·c++·redis·算法
笑口常开xpr2 小时前
【C++】模板 - - - 泛型编程的魔法模具,一键生成各类代码
开发语言·数据结构·c++·算法
一碗绿豆汤2 小时前
c语言-运算符
c语言
AA陈超3 小时前
虚幻引擎5 GAS开发俯视角RPG游戏 P05-01.创建游戏玩法标签
c++·游戏·ue5·游戏引擎·虚幻
IT小番茄3 小时前
Kubernetes云平台管理实战:自动加载到负载均衡(七)
算法
笑口常开xpr3 小时前
【C++继承】深入浅出C++继承机制
开发语言·数据结构·c++·算法
代码AC不AC3 小时前
【C++】红黑树实现
c++·红黑树·底层结构