0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

const在C语言与C++中的区别与使用!

C语言编程学习基地 来源:C语言编程学习基地 作者:C语言编程学习基地 2022-04-24 16:08 次阅读

简单的const关键字里面的学问还是挺大的,越是基础的知识越是容易忘却。

a1e3ed36-c39f-11ec-bce3-dac502259ad0.jpg

1.在c语言中const

在C语言中 const关键字用来修饰变量名为只读,仅此而已。

也就是说通过变量名不可以修改它的值,但是可以通过得到它的地址来修改他的值。

#include《stdio.h》int main(){

const int a = 10;

int *p = (int *)&a;

*p = 20;

printf(“a = %d

”,a);

return 0;}

同时被const修饰的全局变量也就是外连接,其他源文件要引用只需要加上extern即可。

被const修饰的全局变量不能以地址的形式进行修改,由于它在内存中位于常量区,他的地址空间是只读的。在C语言中被const的变量是直接被分配内存的。

a1fb1858-c39f-11ec-bce3-dac502259ad0.png

2.c++中的const

2.1 c++中const的使用

c++中 const关键字被用来表示常量,和#define的作用一样。

在C++中能否通过地址来改变它的值,取决于是否给他分配了内存。主要分以下三中情况

1、const int a = 10;

这种情况是不分配内存的,直接被写在符号表中,即使后面被分配了内存,那么a的值也不会被改变,输出的值一直都是符号表中的值

``` #include《iostream》 int main(){

const int a = 10;

std::cout 《《 “original a =” 《《 a 《《 std::endl;

int *p = (int *)&a;

*p = 200;

std::cout 《《 “*p =” 《《 *p 《《 std::endl;

std::cout 《《 “last a =” 《《 a 《《 std::endl;

return 0; } ```

测试结果如下图所示:

a20ac99c-c39f-11ec-bce3-dac502259ad0.png

2、int b =100;

const int a = b;

3、const person per ={"name","id"}

2和3这种情况都是直接分配内存的,并不会被写在符号表中,它的值是可以通过地址访问的方式来改变的。

2.2 c++中const的使用建议

在c++中尽量将宏定义#define 替换为 const

由于#define在编译的预处理阶段就替换为相对应的常量,假如 #define Max 1024; 那么我们在由于这发生错误,他只会提示1024出现错误,

而我们换成const int Max = 1024;系统就会提示我们这一行发生了错误,并且定义到相对应的行。

2.3 常量指针与指针常量的区别

这一题目都是面试中好多公司愿意问的问题,刚好学习到这,就把这块也纳入到本章节中。

指针常量

int *const p;,顾名思义它是一个常量,只不过被指针修饰。

int a = 10, b =20;int *const p = &a;

p = &b; //×*p = 30; //√

常量指针

const int *p;p是一个常量

int a = 10, b =20;int *const p = &a;

p = &b; //√*p = 30; //×

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • C语言
    +关注

    关注

    180

    文章

    7533

    浏览量

    129967
  • C++
    C++
    +关注

    关注

    21

    文章

    2065

    浏览量

    72913
  • CONST
    +关注

    关注

    0

    文章

    43

    浏览量

    8038

原文标题:知识分享:const 在C语言与C++中的区别与使用!

文章出处:【微信号:cyuyanxuexi,微信公众号:C语言编程学习基地】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    C/C++代码动态测试工具VectorCAST插桩功能演示#代码动态测试 #C++

    C++代码
    北汇信息POLELINK
    发布于 :2024年04月18日 11:57:45

    c语言,c++,java,python区别

    C语言C++、Java和Python是四种常见的编程语言,各有优点和特点。 C语言: C语言是一种面向过程的编程
    的头像 发表于 02-05 14:11 489次阅读

    vb语言c++语言区别

    VB语言C++语言是两种不同的编程语言,虽然它们都属于高级编程语言,但在设计和用途上有很多区别
    的头像 发表于 02-01 10:20 645次阅读

    单片机编程语言可以用c++吗?

    单片机编程语言可以用c++吗?
    发表于 11-09 06:40

    嵌入式C/C++语言精华文章集锦

    /C++编程,我们经常要传送的不是简单的字节流(char型数组),而是多种数据组合起来的一个整体,其表现形式是一个结构体。 经验不足的开发人员往往将所有需要传送的内容依顺序保存在 char 型数组,通过
    发表于 09-25 08:00

    如何为原生C++开发设置Android Studio

    本指南中,我们将介绍如何为原生C++开发设置Android Studio,并了解如何将Neon内部功能用于ARM支持的移动设备。 不要重复自己(Dry)是软件开发的主要原则之一。 遵循这一原则通常
    发表于 08-17 08:28

    如何为Arm编译Cc++代码

    Studio或Keil MDK IDE环境。 Linux编译常见的编程语言Arm上得到了很好的支持,大多数开源工具都可以Linux发行版提供的包中使用。用于
    发表于 08-02 17:28

    ARM C语言扩展规范

    的应用程序程序员  系统程序员需要对ARM目标的低级访问,而不是C/C++所提供的访问权限  编译器实现者,他们将实现本规范  IDE、静态分析工具等的实现者,他们希望处理C/C++
    发表于 08-02 06:27

    C++程式語言 第一章 1-7C++運算式 - 第1节C++程式語言 第一章 1-7C++運算式 -

    编程语言C++
    充八万
    发布于 :2023年07月30日 03:10:00

    C++程式語言 第一章 1-3C++字串和Vector向量 - 第1节C++程式語言 第一章 1-3C

    编程语言C++
    充八万
    发布于 :2023年07月30日 03:08:19

    一起探索C++的世界!

    C++
    YS YYDS
    发布于 :2023年07月07日 19:10:25

    C语言关键字const的几种用法

    本期来讲解一个C语言的关键字——const
    发表于 06-21 11:05 1040次阅读
    C<b class='flag-5'>语言</b>关键字<b class='flag-5'>const</b>的几种用法

    单片机的C语言里面,有个修饰词const,这个词放到变量类型前和后有什么区别吗?

    单片机的C语言里面。有个修饰词const,这个词放到变量类型前和后有什么区别吗?我看到有网友发的两个贴里有这两个用法,不太懂
    发表于 06-20 08:24

    const关键字应用总结

    C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性
    的头像 发表于 05-26 09:06 383次阅读