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

    C++const关键字

    C++const关键字 0x1 常量 C++定义常量有两种方式 #define 宏常量:#define 常量名 常量值 通常在文件上方定义,表示一个常量 宏常量不可以修改 // 宏常量 #define MAX 999 int main() { return 0; } const修饰的变量: const 数据类型 常量名 = 常量值 通常在变量定义前加关键字const,修饰该变量为常量,不可修改 season << " 个季节" << endl; return 0; } 0x2 const修饰指针 const修饰指针有三种情况: const修饰指针——常量指针( const int *p 0x5 const修饰成员函数 0x51 常函数 成员函数后加const后我们称为这个函数为常函数 常函数内不可以修改成员属性 成员属性声明时加关键字mutable后,在常函数中依然可以修改 // / ,也可以修改这个值 }; void test02() { const Person p = {1, 2}; // 在对象前加const,变为常对象 // p.m_A = 100;

    78830编辑于 2023-02-27
  • 来自专栏程序员互动联盟

    【面试宝典】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都不能再被赋值。 修饰函数 (1)普通函数 放在返回值前修饰返回值表示返回值必须保持其常量性,不能被更改; 放在参数前修饰参数表示该参数必须保持其常量性,不能在函数体内被修改; (2)类成员函数 放在类成员函数尾部,表示其在函数内并不修改对象的属性,只是读取等操作非更易型操作 修饰类对象 当类的对象被声明为const类型后,它只能调用用const修改的成员函数。

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

    const关键字总结

    const关键字const修饰的变量是不能改变的 const修饰变量时,必须在声明变量的同时给出初始化(类中的const成员变量不一样) 顶层const与底层const 顶层const 定义为变量本身是一个常量 ,因此对一切的内置类型常量而言,所有的const都是顶层const 对指针来说,常量指针是顶层const,对于引用则没有顶层const的概念。 const指针不可以赋值给顶层const指针 const int& e = a; //引用的底层const e = 1000; //错误,引用的底层const不能修改值 const int* Example e2; //正确,类的非const成员可以调用const成员函数和非const成员函数 e2.getData(); return 0; } 不能在类声明中初始化const数据成员 class Example { public: Example():m_data(DATA1){} private: enum {DATA1=100,DATA2=200}; //枚举常量成员 int

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

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

    一、const 常量内存分配时机 在上一篇博客中 , 讲到了获取 const 常量的地址 , 代码如下 : // 定义常量 // 该常量定义在了 符号表 中 // 符号表 不在内存四区中 , 是另外一种机制 const int a = 10; // 定义一个指针 int* p = NULL; // 将 常量 a 的地址赋值给指针 // 在 堆内存中重新 常量 通常指的是在程序运行期间其值不会改变的变量 , 常量在定义后会被分配内存 , 这个过程一般发生在编译器的编译阶段 ; C++ 程序都是先进行编译 , 然后再执行 , 编译时分配内存意味着在程序运行之前 , 常量在程序内存中的位置就已经固定了 ; const 常量值在 内存分配完毕后 就不能再被修改 , 因此可以使用常量表示固定值 , 如 : 圆周率 \pi , 自然数 e ; const 常量 不是在运行期间分配内存的 ) 二、使用如下代码验证 const 常量内存分配时机 ---- 使用如下代码验证 : // 包含 C++ 头文件 //#include "iostream" // 使用

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

    【C语言】const 关键字

    126﹣总榜960⇿全网访问量30w+ 本文由 謓泽 原创 CSDN首发如需转载还请通知⚠ 个人主页-謓泽的博客_CSDN博客  欢迎各位→点赞 + 收藏⭐️ + 留言​ 系列专栏-【C语言】关键字 常量:不能被改变的量 变量:可以被改变的量 1、整形常量(八进制、十进制、十六进制)注意:八进制中个位不能超过7,十六进制不能超过F,F表示15 2、浮点常量(1.2、1.0、1e-001) 3、字符常量 = %d\n", i); *p = 20; printf("i2 = %d\n", i); return 0; } 运行结果 i1 = 10 i2 = 20 注⇢在上述代码的第四行当中我们是需要强制转换成与 [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 关键字修饰数组与修饰变量类似的,表名了此数组只能具有只读性,不可以被修改。

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

    const关键字应用总结

    C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,constC++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的 1 概述 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,通过查阅资料,将const作用归纳如下: 可以定义const常量 const int Max = 10; 便于进行类型检查 b. const int * fun2() //调用时 const int *pValue = fun2(); //我们可以把fun2()看作成一个变量,即指针内容不可变 c. int* const fun3() //调用时 int * const pValue = fun2(); //我们可以把fun2()看作成一个变量,即指针本身不可变 例如: class AAA { void func1(); void func2() const; } const AAA aObj; aObj.func1(); 错 aObj.func2

    75210发布于 2020-12-02
  • 来自专栏秘籍酷

    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 2. 如果有个成员函数想修改对象中的某一个成员变量,可以使用 mutable 关键字修饰这个成员变量: #include<iostream> using namespace std; class Test {

    76230发布于 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 ("pause"); return 0; } 2. const 参数为指针时,可以防止指针被意外篡改 #include<iostream> using namespace std; void

    34830编辑于 2021-12-16
  • 来自专栏编程珠玑

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

    前言 在《const关键字到底该怎么用》一文中介绍了C语言中的const关键字,本文说说C++中的const关键字,它的大部分特点和C语言中的类似,所以本文主要针对不同之处。 与C语言中const关键字不同的是,C++中使用const关键字定义的b变量的值在被改变时会被检测。 = '2'; } int main(void) { char a[] = "12345"; test(a); return 0; } 毕竟未定义行为常常有惊喜。 总结 关于const关键字在C和C++中的区别,想必到这里你已经清楚了。const关键字通常能借助编译器帮助我们提前发现一些不易察觉的问题。 如果你对下面的问题还不清楚,建议阅读《const关键字到底该怎么用》 你能分清下面的声明区别吗? const int *p; int * const p; int const * const p;

    99300发布于 2019-11-13
  • 来自专栏程序编程之旅

    C++const对象和const成员

    const对象 定义类对象时可以将其指定为const对象。定义后const对象不能再被修改。 const对象不能调用非const类型的成员函数。 : “int CTime::getHour(void)”: 不能将“this”指针从“const CTime”转换为“CTime &” e:\chenhaoxiang\20170603\test2\test2 \mian.cpp 34 1 test2 其实就是告诉我们const对象不能引用非const成员函数 为什么要有这个规则: 因为在非const成员函数内部可能对对象进行修改,比如set 关键字来声明const数据成员。 2.初始化列表 初始化列表: 除了在构造函数中对数据成员进行初始化,C++还提供另外一种方法来对数据成员进行初始化 初始化列表并不是在构造函数内进行初始化 构造函数初始化列表以一个冒号开始,

    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; // 错误,表达式必须是可修改的左值 }; const引用 这是const最常用的一种方式,通常用于函数的参数列表中,因为我们知道在C++中函数参数有3中传递方式,分别是值传递,指针传递(或者叫地址传递),引用传递,前两种在传递时都会发成拷贝行为 所以为了避免意外修改导致实参的值发生改,通常会采用const加上引用的方式传递参数 void test(const Student &s) { ... } constexpr关键字 constexpr

    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关键字来使用。 示例 #include <stdio.h> int main() { const int matrix[2][2] = {{1, 2}, {3, 4}}; for (int i = 0 输出结果 Returned value = 42 5. constC++中的扩展 在C++中,const关键字的应用更加广泛,可以用于修饰成员函数、引用、迭代器等。

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

    C++ const详解

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

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

    C++const成员

    前言 在之前已经已经分享过了关于 【C++】类和对象之常引用与运算符重载,这次分享的有关const的内容,话不多说,正文开始。 2. const成员 将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。 Date d1(2024, 1, 31); d1.Print(); Date d2(2024, 3, 31); d2.Print(); return 0; } 如果是像d2呢? p2的改变会影响p1,也就是i。 权限的放大:指针和引用赋值才存在权限放大。 来看看下面的几个问题: const对象可以调用非const成员函数吗? 不行,权限放大了 非const对象可以调用const成员函数吗? 可以,这里权限缩小 const成员函数内可以调用其它的非const成员函数吗?

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

    C++ 顶层 const

    我的主力博客:半亩方塘 本文的主要參考来源来自于:C++ Primer 中文版(第 5 版) 第 57 面至第 58 面 1. &ci; // 同意改变 p2 的值,这是一个底层 constconst int *const p3 = p2; // 靠右的 const 是顶层 const ,靠左的是底层 constp2 = p3 ; // 正确:p2 和 p3 指向的对象的类型同样,p3 顶层 const 的部分不影响 (2)底层 const 的限制不能忽略,  要求拷出和拷入的对象有同样的底层 const 资格或者能转换为同样的数据类型 ,一般很量可以向常量转换,反之则不行 int *p = p3; // 错误:p3 包含底层 const 定义,而 p 没有 p2 = p3; // 正确:p2 和 p3 都是底层 const p2 const 资格,p2 也是一个底层 const,故正确; p2 = &i; 对 i 取地址将得到 int*, p2 是 const int*,前者是很量,后者是常量,赋值语句等号右側的类型向左側转换

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

    C语言: const关键字与指针

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

    86910发布于 2021-02-03
  • 来自专栏嵌入式实验基地

    面试爱问之const关键字

    2、define定义的是常量,define定义的宏在编译后消失了,它不占用内存,而const定义的常变量本质上仍然是一个变量,具有变量的基本属性,有类型、占用存储单元,除了不能作为数组的长度,用const 代码示例: //第一种,常量指针 const int *p1; //p本身不是const的,而p指向的变量是const int const *p2; //p本身不是const的,而p 例如:void func(int x)不用写成void func(const int x) 2、函数参数为指针: 指针传递(pass-by-pointer)只会进行浅拷贝,拷贝一份指针给函数,而不会拷贝一份原始对象 void swap ( int * const p1 , int * const p2 );指针p1和指针p2指向的地址都不能修改。 2、如果给以“指针传递”方式的函数返回值加 const 修饰,那么函数返回值(即指针)的内容不能被修改,该返回值只能被赋给加const 修饰的同类型指针。

    67720编辑于 2023-09-06
领券