首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏后端码匠

    C++const关键字

    C++const关键字 0x1 常量 C++定义常量有两种方式 #define 宏常量:#define 常量名 常量值 通常在文件上方定义,表示一个常量 宏常量不可以修改 // 宏常量 #define MAX 999 int main() { return 0; } const修饰的变量: const 数据类型 常量名 = 常量值 通常在变量定义前加关键字const,修饰该变量为常量,不可修改 常量不可以修改,const限定为只读状态,防止修改操作 int main() { // const修饰变量 const int season = 4; cout << "一年里总共有 " << Person per = {"后端码匠", 18}; printPerson(&per); return 0; } 0x4 常量引用 常量引用主要用来修饰形参,防止形参改变实参 int 0x5 const修饰成员函数 0x51 常函数 成员函数后加const后我们称为这个函数为常函数 常函数内不可以修改成员属性 成员属性声明时加关键字mutable后,在常函数中依然可以修改 // /

    78830编辑于 2023-02-27
  • 来自专栏书山有路勤为径

    4.C++程序设计——const关键字

    1.定义常量 const int MAX_VAL = 23; const double Pi = 3.14; 2.定义常量指针 不可通过常量指针修改其指向的内容 int n,m; const int * p = &n; *p = 5; //编译错误 n = 4; //正确 p = &m; //正确,可以改变常量指针指向的对象 不能把常量指针赋值给非常量指针,反过来可以 const int * p1; int p2;//正确 p2 = p1;//错误 p2 = (int *)p1;//正确,通过强制类型转换 函数参数为常量指针时,可避免函数内部不小心改变参数指针所指地方的内容 void MyPrintf(const char *p) { strcpy(p,"this");//编译错误 printf("%s",p);//正确 } //strcpy()第一个参数类型是char* ,相当于把 const char 3.定义常引用 不能通过常引用修改其引用的变量 int n; const int & r = n; r = 5;//编译错误 n = 4;//正确

    36710发布于 2021-03-04
  • 来自专栏程序员互动联盟

    【面试宝典】C++const关键字的用法

    对于刚毕业的应届生来说面试中经常被问到const关键字的用法,小编在这里为大家总结如下: 修饰常量 用const修饰的变量某种意义上就是常量,编译器会对它进行必要的操作比宏定义多了类型修饰符。 修饰指针 (1)const int *p; p指针const int的指针,不能用赋值语句对*p赋值,但是可以对p赋值。 (2)int* const p=&j; p是指向int的const指针。 p是const数据,所以其本身不可改变,而*p可以被赋值。 (3)const int * const p=&i; p是一个const指针,其指向const数据i。p、*p都不能再被赋值。 放在参数前修饰参数表示该参数必须保持其常量性,不能在函数体内被修改; (2)类成员函数 放在类成员函数尾部,表示其在函数内并不修改对象的属性,只是读取等操作非更易型操作 修饰类对象 当类的对象被声明为const 类型后,它只能调用用const修改的成员函数。

    1.1K50发布于 2018-03-16
  • 来自专栏编程技术专栏

    const关键字总结

    const关键字const修饰的变量是不能改变的 const修饰变量时,必须在声明变量的同时给出初始化(类中的const成员变量不一样) 顶层const与底层const 顶层const 定义为变量本身是一个常量 ,因此对一切的内置类型常量而言,所有的const都是顶层const 对指针来说,常量指针是顶层const,对于引用则没有顶层const的概念。 底层const 只在指针和引用上有效,其定义是该指针指向或该引用绑定的对象是常量。 因此:顶层const和底层const,引用只有底层const。 c = &b; //错误,顶层const指针不能修改指针的指向 b = c; //底层const指针可以指向顶层const指针(顶层const可以赋值给底层const) c = b; //底层 const指针不可以赋值给顶层const指针 const int& e = a; //引用的底层const e = 1000; //错误,引用的底层const不能修改值 const int*

    76510发布于 2019-08-29
  • 来自专栏韩曙亮的移动开发专栏

    C++】C 语言 和 C++ 语言中 const 关键字分析 ② ( const 常量分配内存时机 | const 常量在编译阶段分配内存 )

    分配一个 4 字节的空间 // 将 常量 a 的值 10 存储进去 p = (int *)&a; 在所有的编程语言中 , 常量 都具有如下特点 : 定义时分配内存 , 运行期间保持不变 ; const 常量 通常指的是在程序运行期间其值不会改变的变量 , 常量在定义后会被分配内存 , 这个过程一般发生在编译器的编译阶段 ; C++ 程序都是先进行编译 , 然后再执行 , 编译时分配内存意味着在程序运行之前 不是在运行期间分配内存的 ) 二、使用如下代码验证 const 常量内存分配时机 ---- 使用如下代码验证 : // 包含 C++ 头文件 //#include "iostream" // 使用 是编译器编译时分配的内存 , 三者内存连续 , 分配内存时间相同 , 说明 常量 b 也是在 编译器编译阶段 分配的内存 ; 这里注意 , 在 Visual Studio 2019 开发环境中 , int 类型本来占 4 字节 , 但是在 Debug 调试模式下 , 前后各分配了 4 字节用于存储调试信息 , 这样占了 12 字节 ;

    75750编辑于 2023-10-15
  • 来自专栏【C】系列

    【C语言】const 关键字

    126﹣总榜960⇿全网访问量30w+ 本文由 謓泽 原创 CSDN首发如需转载还请通知⚠ 个人主页-謓泽的博客_CSDN博客  欢迎各位→点赞 + 收藏⭐️ + 留言​ 系列专栏-【C语言】关键字 ⒊注意 ⇨ 在数组当中的下标我们是不能使用 const 修饰的量的,可以说被修饰 const 其实本质还是个变量。 [const]修饰数组⇢在C语言中 const 还可以修饰数组,示例代码如下 const int Array[] = {1,2,3,4,5,6,7,8,9,10}; int const Array[] = {1,2,3,4,5,6,7,8,9,10}; 说明⇢在 const 关键字修饰数组与修饰变量类似的,表名了此数组只能具有只读性,不可以被修改。 说明⇢说明⇢第一种[const]修饰指针以及第二种[const]修饰指针的话,我会更加推荐第一种写法。

    76620编辑于 2022-12-12
  • 来自专栏c语言与cpp编程

    const关键字应用总结

    C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,constC++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的 1 概述 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,通过查阅资料,将const作用归纳如下: 可以定义const常量 const int Max = 10; 便于进行类型检查 char* const pContent;` 还有其中区别方法,沿着号划一条线 如果const位于的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;如果const位于*的右侧,const } 对于const类对象/指针/引用,只能调用类的const成员函数,因此,const修饰成员函数的最重要作用就是限制对于const对象的使用。 4 小结 要大胆的使用const,这将给你带来无尽的益处,但前提是你必须搞清楚原委;要避免最一般的赋值操作错误,如将const变量赋值; 在参数中使用const应该使用引用或指针,而不是一般的对象实例

    75210发布于 2020-12-02
  • 来自专栏编程珠玑

    C++与C中的const关键字有何差别?

    前言 在《const关键字到底该怎么用》一文中介绍了C语言中的const关键字,本文说说C++中的const关键字,它的大部分特点和C语言中的类似,所以本文主要针对不同之处。 与C语言中const关键字不同的是,C++中使用const关键字定义的b变量的值在被改变时会被检测。 因为前者传递指针的副本,指针指向不会被改变,但可以改变指向的内容;但是int类型参数,它也是传递副本,但是永远不会被函数改变,自然也没有必要加const关键字。更多解释可以参考《传值和传指针》。 总结 关于const关键字在C和C++中的区别,想必到这里你已经清楚了。const关键字通常能借助编译器帮助我们提前发现一些不易察觉的问题。 如果你对下面的问题还不清楚,建议阅读《const关键字到底该怎么用》 你能分清下面的声明区别吗? const int *p; int * const p; int const * const p;

    99300发布于 2019-11-13
  • 来自专栏秘籍酷

    C语言(关键字const

    const是C语言中最坑爹的关键字,典型挂羊头卖狗肉,const本意是常量,但是C语言const只能用来定义只读变量。 拓展: const在C语言中的作用,基本都是用来修饰指针的,而且都是前置修饰: const int *p = &a; // 前置修饰 int *const p = &a; // 后置修饰 前置修饰时,我们可以通过指针

    1.3K20发布于 2019-08-08
  • 来自专栏Python爬虫实战

    AboutCPlusPlus之const关键字

    最近打算整理一下 C++ 的知识点,在 github 上搞一个项目,美其名曰“AboutCPlusPlus”,项目地址:https://github.com/CPythoner/AboutCPlusPlus 在 C++ 中用来修饰内置类型变量、自定义对象、成员函数、返回值、函数参数。 1. const int a = 5; int const b = 5; const int arr1[3] = {1,2,3}; int const arr2[3] = {1,2,3}; 来看一些对 const 4. 修饰类的成员变量和成员函数 4.1 类的成员变量 const 修饰类的成员变量,表示该成员为常量,不能不修改,只能在初始化列表中赋值。 如果有个成员函数想修改对象中的某一个成员变量,可以使用 mutable 关键字修饰这个成员变量: #include<iostream> using namespace std; class Test {

    76130发布于 2021-04-29
  • 来自专栏yanlongli_艳龙

    const 关键字的学习

    一、const 修饰普通类型的变量 const int a = 7; int b = a; // 正确 a = 8; // 错误,不能改变 a 被定义为一个常量,并且可以将 a 赋值给 二、const 修饰指针变量 1. const 修饰指针指向的内容,则内容为不可变量 const int *p = 8; 指针指向的内容 8 不可改变。 简称左定值,因为 const 位于 * 号的左边 2. const 修饰指针,则指针为不可变量 int a = 8; int* const p = &a; *p = 9; // 正确 int b = 因为 const 位于 * 号的右边 3. const 修饰指针和指针指向的内容,则指针和指针指向的内容都为不可变量 int a = 8; const int * const p = &a; 这时,const 值传递的 const 修饰传递,一般这种情况不需要 const 修饰,因为函数会自动产生临时变量复制实参值 #include<iostream> using namespace std; void

    34830编辑于 2021-12-16
  • 来自专栏程序编程之旅

    C++const对象和const成员

    const对象 定义类对象时可以将其指定为const对象。定义后const对象不能再被修改。 const对象不能调用非const类型的成员函数。 //const const CTime time4(10); CTime const time5; 如果你用const对象引用了这个类中的非const成员函数,就会报错: 错误 1 error C2662 关键字来声明const数据成员。 2.初始化列表 初始化列表: 除了在构造函数中对数据成员进行初始化,C++还提供另外一种方法来对数据成员进行初始化 初始化列表并不是在构造函数内进行初始化 构造函数初始化列表以一个冒号开始, 3.const成员函数 const成员函数只能被const对象引用。const成员函数内可以引用const数据成员,也可以引用非const数据成员,但不能修改非const数据成员的值。

    1.5K10发布于 2021-01-21
  • 来自专栏毛利学Python

    【小白学习C++ 教程】八、在C++指针传递引用和Const关键字

    因此输出为 3 9 使用 Const 传递 const关键字告诉编译器,这样的变量不会改变的。 比如:double const pi = 3.14;。如果我们尝试更改pi,编译器将抛出错误。 有时,我们const在函数中使用参数;这是当我们知道我们想要编写一个函数,其中参数不会在函数内部更改的事实时。 下面是一个例子: int triple(int const i) { return i * 3; } 在这个例子中,我们没有修改i. 因此,为了节省不修改参数值的函数的计算成本,我们实际上可以更进一步并使用const引用: int triple(int const &i) { return i * 3; } const 确保参数不会改变 #include <iostream> using namespace std; int triple(int const &i) { return i * 3; } int main(){

    65940编辑于 2022-08-18
  • 来自专栏程序人生丶

    C++const 和 constexpr关键字解析:常量、函数和指针

    很多C++的初学者看到const这个关键字的第一反应都是一头雾水,主要是因为const可以出现在很多的位置,以及后面加入的constexpr更是常常感到困惑,今天就为大家一一解释出现它们的含义和以及作用 const关键字 const修饰变量 这是最基本的一种用法,顾名思义,就是将该变量修饰为常量,从而不可以修改。 很多的全局变量都是通过常量来进行修饰,需要注意的是,使用const关键字修饰的变量需要立刻初始化 // 修饰局部变量,全局变量,成员变量 const int a = 2; // 错误,表达式必须是可修改的左值 表达式必须是可修改的左值 *p = 3; // 正确 a = 4; // 4 cout << *p << endl; // 同样地,有人习惯这种写法,作用是一样的,看个人喜好即可 int const = 2; }; const引用 这是const最常用的一种方式,通常用于函数的参数列表中,因为我们知道在C++中函数参数有3中传递方式,分别是值传递,指针传递(或者叫地址传递),引用传递,前两种在传递时都会发成拷贝行为

    1.5K20编辑于 2023-12-03
  • 来自专栏程序手艺人

    C++const

    \n"); return 0; } 编译结果 gcc test.c –> c = 5 g++ test.cpp –> c = 0 C++中的const C++在C的基础上对constconst 常量使用& 操作符 注意: C++编译器虽然可能为const常量分配空间,但不会使用其存储空间的值 ? 当const 常量为全局,并且需要在其它文件中使用 当使用&操作符对const常量取地址 C++中的const 常量类似于宏定义 const int c = 5; ≈ #define c 5 C ++ 中的const 常量在与宏定义不同 const 常量是由编译器处理 编译器对const常量进行类型检查和作用域检查 宏定义由预处理器处理,单纯的文本替换 小结 与C语言不同,C++中的const 不是只读变量 C++中的const是一个真正意义上的常量 C++编译器可能会为const常量分配空间 C++完全兼容C语言中const常量的语法特性

    1.1K60发布于 2018-05-18
  • 来自专栏C语言

    【C语言】const 关键字详解

    C语言const关键字详解 const关键字在C语言中用于定义常量,提供只读的变量。这意味着一旦初始化,const变量的值不能再被修改。 下面详细介绍const关键字的用法、作用以及其在不同上下文中的应用。 1. 基本概念 1.1 const关键字的基本用法 const关键字可以用于修饰基本数据类型、指针、函数参数等。 它通过在变量声明前加上const关键字来使用。 printf("%d ", p[i]); } printf("\n"); return 0; } 输出结果 1 2 3 4 5 4. const与volatile 输出结果 Returned value = 42 5. constC++中的扩展 在C++中,const关键字的应用更加广泛,可以用于修饰成员函数、引用、迭代器等。

    91910编辑于 2024-12-07
  • 来自专栏科学计算

    C++ const详解

      常量在C++中经常用到,用关键字const表示,它是常数变量,也就是说,它仍然是变量,而不是常数。什么区别呢? 如果是在不同的文件中使用,需要用到关键字extern extern const int a ; 这样表示变量a是一个定义别处的全局变量,在这里只能使用,并不能修改,但a并不一定真的是一个const。 指针常量和常量指针   这应该是C++面试和笔试中经常考到的一个知识点。 可以看const和*的先后顺序: const int *p; //常量指针 int *const p; // 指针常量 而且只要我们记住,const后面的是常量,这样就很容易区分它们的功能,对于常量指针 ; // OK } 所以,对于const变量,我们可以要记住一个核心的一点是,const后面的变量是不能当左值的。

    80710发布于 2020-06-29
  • 来自专栏zxctscl个人专栏

    C++const成员

    前言 在之前已经已经分享过了关于 【C++】类和对象之常引用与运算符重载,这次分享的有关const的内容,话不多说,正文开始。 2. const成员 将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。 总之: 成员函数,如果是一个对成员变量只进行读访问的函数,建议加const,这样const对象和非const对象都能使用。 来看看下面的几个问题: const对象可以调用非const成员函数吗? 不行,权限放大了 非const对象可以调用const成员函数吗? 可以,这里权限缩小 const成员函数内可以调用其它的非const成员函数吗? 不行,权限放大了 非const成员函数内可以调用其它的const成员函数吗?

    35410编辑于 2024-03-03
  • 来自专栏全栈程序员必看

    C++ 顶层 const

    我的主力博客:半亩方塘 本文的主要參考来源来自于:C++ Primer 中文版(第 5 版) 第 57 面至第 58 面 1. , 底层 const 则与指针和引用等复合类型的基本类型部分有关 ,比較特殊的是,指针既能够是顶层 const 也能够是底层 const ,这一点与其它类型差别明显。 顶层 const 与底层 const 在运行拷贝操作时的不同 对于顶层 const 与底层 const ,在运行对象拷贝时有着明显的不同: (1)顶层 const 不受什么影响 int i = 0; const int ci = 42; // 不能改变 ci 的值,这是一个顶层 consti = ci; // 正确:ci 是一个顶层 const,对此操作无影响const int *p2 = 正确:const int& 能够绑定到一个普通 int 上 来分析一下以上的代码: int *p = p3; p3 既是一个顶层 const 又是一个底层 const,在运行对象拷贝时,顶层 const

    49010编辑于 2021-12-03
  • 来自专栏游戏开发司机

    C语言: const关键字与指针

    const修饰指针的4种形式 const关键字,在C语言中用来修饰变量,表示这个变量是常量。 const修饰指针有4种形式,区分清楚这4种即可全部理解const和指针。 int * const p3; // p本身是cosnt的,p指向的变量不是const的 // 第四种 const int * const p4;// p本身是cosnt的,p指向的变量也是const // 编译无错误无警告 *p3 = 5; // 编译无错误无警告 p3 = &a; // error: assignment of read-only variable ‘p3’ p4 = &a; // error: assignment of read-only variable ‘p4’ *p4 = 5; // error: assignment of read-only 一个const关键字只能修饰一个变量,所以弄清楚这4个表达式的关键就是搞清楚const放在某个位置是修饰谁的 const修饰的变量真的不能改吗?

    86910发布于 2021-02-03
领券