首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏编程语言的世界

    c++常量,c++常量定义

    c++常量定义支持两种语法。 #define 常量名称  常量值const 常量类型 常量名称 = 常量值例如我们分别用两种语法表示linux和windows的换行符#include <iostream>#define WIN_EOL (){    std::cout << "Hi Windows" << WIN_EOL;    std::cout << "Hi Linux" << LIN_EOL;    return 0;}注意:常量定义为大写字母形式是一种编程代码规范

    51010编辑于 2023-06-27
  • 来自专栏深度学习与计算机视觉

    C++ 指针常量常量指针

    ; //2 int const* p; //3 int * const p; 其中1和2是一种,这种情况下不能使用指针修改指向数据的值,但是也仅仅是不能使用指针p修改而已,p指向的值本身如果不是常量的话那么还可以直接对值修改 ,举个例子: int a = 5; const int* p = &a; a = 4;//合法 *p = 3;//不合法 由于这个特点,通常把const int* p的形式作为函数的参量,以表示函数不会用这个指针修改数据 int a = 5; const int b = 5; const int* p = &a; a = 4;//合法 *p = 3;//不合法 p = &b;//合法 b = 4;//不合法 *p = 3 ;//不合法 而对于3,它的作用是保证指针不会指向别处,也就是一旦用这种方式声明并初始化,指针指向的地址永远不会发生变化,但是其中的值却可以通过指针改变: int a = 5; int b = 6; int * const p = &a; *p = 4;//合法 p = &b;//不合法 以上就是所谓的指针常量常量指针所包含的概念,在这里标个号: 1,2暂时称为第一类,3暂时称为第二类,那么第一类和第二类到底哪个叫做指针常量

    2.2K70发布于 2018-01-02
  • 来自专栏全栈程序员必看

    c++ 常量表达式_c++符号常量

    常量表达式主要是允许一些计算发生在编译时,即发生在代码编译阶段而不是代码运行阶段。这是很大的优化,因为如果有些事情可以在编译时做,那么它只会做一次,而不是每次程序运行时都计算。 使用constexpr,你可以创建一个编译时的函数: constexpr int getConst() { return 3; } void test07() { int arr 只能是一个常量表达式 //函数中只能有一条return语句,在linux下编译失败,在vs2017上编译通过 constexpr int getconst() { constexpr int i = static_assert(1, "fail"); return 100; } int a = 3; constexpr int data3() { return a;// return返回语句表达式中不能使用非常量表达式的函数 函数体必须为空 初始化列表只能由常量表达式来赋值 struct Date { constexpr Date(int y, int m, int d): year(y), month(m), day

    52650编辑于 2022-11-10
  • 来自专栏全栈程序员必看

    c++常量常量表达式

    rci = 90;//错误 不能修改 允许常量引用绑定到非常量的对象、字面值或表达式上 int i = 20; const int &ri(20); const int &ri3(i + ri); 常量引用仅对引用可参与的操作作出了限定 ,对于引用的对象本身未做限定 int i(10); const int &c(i); i = 90;//i不是常量,可以改变值 c = 20;//错误,c是一个常量引用,const限定了c为常量不能修改 *pci2 = 90; cout << *pci1 << endl;//23 cout << *pci2 << endl;//90 顶层和底层 顶层:表示指针本身是个常量 底层:指针所指的对象是常量 字面值和constexpr 常量表达式:字面值是常量表达式,用常量表达式初始化的const对象也是常量表达式 const int ci = 20;//ci是常量表达式 const int cii = ci + 90;//cii是常量表达式 int iv = 30;//iv不是常量表达式 声明为constexpr的变量一定是常量,而且必须用常量表达式初始化 constexpr int cif = 23;

    79620编辑于 2022-11-11
  • 来自专栏bit哲学院

    C++常量与变量

    参考链接: C++变量, 字面量和常量 日期:2020年3月27日 作者:Commas 注释:开始我的C++学习的奇妙之旅,愿意和我一起学习的小伙伴们可以关注我,也可以给我点赞,如若博客有哪里写的不好的地方 ,还望各位看官指出,非常感谢…… 更多C++内容,请看我的《C++学习的奇妙之旅》   文章目录  一、前言二、基本数据类型三、常量(一)常量的类型(1)整数常量(2)浮点常量3)布尔常量(4)字符与字符串常量 类型读写说明常量仅只读,在定义并初始化后,不可修改原值变量可读写,在程序运行中,可以修改变量值 二、基本数据类型  在C++中,数据类型决定了变量存储的大小和布局,基本数据类型可分为以下4类:  整数类型 在标准C++类库中有一个String类,这个是值得推荐的,很C++字符串风格。 ,如3.14159可以表示为314159E-5L  (3)布尔常量  true:代表真,不应该将其看作为1;false:代表假,不应该将其看作为0;  (4)字符与字符串常量  类型表示存储形式示例转义字符如

    1K40发布于 2021-02-04
  • 来自专栏游戏开发司机

    C++:18---const关键字(附常量指针、指针常量常量指针常量

    2int i = 42;const int &r1 = i; //正确,允许将const int&绑定到一个普通对象上const int &r2 = 42; //正确const int &r3 pa = 1; //不能通过常量指针修改所指对象的值 指针常量,因为指针是个常量,而不是类型是常量,因此有下面的规则: 只能指向于非常量,不能指向于常量(因为放置指针常量修改常量的值 ) 不可以改变指针常量的指向,因为指针自身是个常量 int a = 1;const int b = 2;int c = 3; int* const pa = &a; //正确,a是非常量int* const ; const int *p2 = &ci;int *const p1 = &j;const int *const p3 = p2;p3 = p1; //错误,p3的指向也不能更改 int * p = p3; //错误,p3包含const,而p没有p2 = p3; //正确,p2和p3都包含底层constp1 = p3; //错误,p1的指向不能更改

    1.7K10发布于 2021-02-03
  • 来自专栏全栈程序员必看

    c++入门教程–-3数据类型,变量与常量

    c++入门教程–-3数据类型,变量与常量 数据类型: bool 定义是否,值只有true 和 false char 定义字符,值是’a’ , ‘b’ 用单引号括起来的 int 定义整数 float 常量: 就是永远不变的量 1使用 #define 预处理器。 2使用 const 关键字 例子: #define X 10 const int Y= 10; 现在X和Y都不可以变化了。

    35430发布于 2021-04-07
  • 来自专栏学海无涯

    3.常量&变量

    什么是常量和变量 在Swift中规定:在定义一个标识符时必须明确说明该标识符是一个常量还是变量 使用let来定义常量,定义之后不可以修改 使用var来定义变量,定义之后可以修改 变量的基本使用 import UIKit let a : Int = 10 //报错——当一个字段定义为常量时是不可以修改的 // a = 20 var b : Int = 20 // 因为b定义为变量,因此是可以修改的 b = 30 常量和变量的使用注意: 注意: 在真正的开发过程中,建议先定义常量,如果需要修改再修改为变量(更加安全) 声明为常量不可以修改的意思是指针不可以再指向其他对象,但是可以通过指针拿到对象,修改其中的属性

    58610发布于 2018-09-28
  • 来自专栏全栈程序员必看

    C++常量const建议收藏

    ,编译器当然没有必要维护这个符号,而常量折叠发生的情况是,对常量的引用情况全部替换为该常量的值,但是,常量名并不会消失,编译器会把它放入到符号表中,同时会为该变量分配空间,栈空间或全局空间。 的值却实实在在等于0 (2)printf( “%d\n%d\n%d\n%d\n”,&i,j,i,*j) 别替换为printf( “%d\n%d\n%d\n%d\n”,&i,j,0,*j) (3) const int i[] = {1,2,3,4,5};    int a = i[3];    float f[i[3]]; // illegal   在一个数组定义里,编译器必须能产生这样的移动存储数组的栈指针代码 const在C和C++中的区别 const int buffsize = 10; char buff[buffsize];   上面的代码在C++中可以,但在C中不行,因为buffsize占用存储的某个地方 ,所以C编译器不指定它在编译时的值 const int buffsize;   上面的代码在C中可以,因为在C中默认const为外部链接,C++默认const为内部链接,所以再C++中要写成extern

    47630编辑于 2022-07-14
  • 来自专栏韩曙亮的移动开发专栏

    C++C++ 引用详解 ⑩ ( 常量引用案例 )

    C++ 语言中 , 常量引用 是 引用类型 的一种 ; 借助 常量引用 , 可以将一个变量引用 作为实参 传递给一个函数形参 , 同时保证该值不会在函数内部被修改 ; 这样既保证了参数传递效率 , 有保证了数据安全 ; 常量引用 的重要使用场景 : 函数参数传递 函数返回值 对象成员 本篇博客会给出 常量引用 的几种案例 ; 一、常量引用语法 1、语法简介 使用 " 普通变量 " 初始化 " 常量引用 " , 就是将 普通变量 赋值给 常量应用 , 也可以理解为 将 变量转为常量 ; 常量引用 语法 : const T& variable_name = value; T 是 常量引用 的类型名称 , ========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ========== 正确代码示例 : // 包含 C++ 头文件 #include "iostream" // : // 包含 C++ 头文件 #include "iostream" // 使用 std 标准命名空间 // 该命名空间中 , 定义了很多标准定义 using namespace std; /

    63730编辑于 2023-10-15
  • 来自专栏韩曙亮的移动开发专栏

    C++C++ 引用详解 ⑧ ( 普通引用与常量引用 | 常量引用概念与语法 )

    一、普通引用 1、概念说明 之前的 【C++C++ 引用详解 ① ~ ⑦ 博客中 , 讲解的都是 普通引用 , 也就是 将 普通变量 赋值给 引用 , 过程如下 : 先定义 普通变量 a , 然后定义 这里的 引用 b 就是 普通引用 ; // 定义变量 a int a = 10; // 定义变量 a 的引用 b int& b = a; 2、代码示例 - 普通引用 普通引用代码示例 : // 包含 C+ 变量 , 转而使用 该 常量引用 , 相当于 将 变量 转为了 常量 ; 常量引用 可以令 变量的引用 转为 常量 ; 即 不能通过 常量引用 修改 变量 ; 如果修改 常量引用 的值 , 编译时会报错 : error C3892: “b”: 不能给常量赋值 2、常量引用概念与语法 在 C++ 语言中 , " 常量引用 " , 英文名称为 Const Reference , 是一种引用类型 , 另外一种引用就是 常量引用 b 修改 变量 a 的值 , 则会报错 : error C3892: “b”: 不能给常量赋值 错误代码示例 : // 包含 C++ 头文件 #include "iostream" //

    80711编辑于 2023-10-15
  • 来自专栏小林coding

    C++ const常量对象、常量成员函数和常引用

    — 1 — 常量对象 如果不希望某个对象的值被改变,则定义该对象的时候可以在前面加 const 关键字。 --- — 2 — 常量成员函数 在类的成员函数后面可以加 const 关键字,则该成员函数成为常量成员函数。 这里有两个需要注意的点: 在常量成员函数中不能修改成员变量的值(静态成员变量除外); 也不能调用同类的 非 常量成员函数(静态成员函数除外)。 const Sample obj; obj.value = 100; // 出错,常量对象不可以被修改 obj.func(); // 出错,常量对象上面不能执行 非 常量成员函数 obj.GetValue; // OK,常量对象上可以执行常量成员函数 return 0; } ---- — 3常量成员函数重载 两个成员函数,名字和参数表都一样,但是一个是

    1.8K20发布于 2020-03-31
  • 来自专栏技术最杂谈

    C++中Const常量机制分析

    rBAoL1-Q20mAN44lAAO6uDAqdEA653.png const常量机制分析 const为C/C++常用的修饰符,表示该变量是一个常量,不可被修改等含义。 3,C和C++中实现机制一样吗? 4,对于内置类型和自定义类型数据,const实现原理一样吗? 5,为什么const变量可以被定义在.h头文件中? 问题1, const修饰的变量是否真的不可修改? 3,C和C++中实现机制一样吗? 3.1不同点: 对于局部const变量,C++在变量具体使用地方通过常量替换实现。C语言中表示只读的变量。 3.2 相同点: 都不能对只读数据段的常量进行修改。 特别注意点: 对于头文件定义字符串指针常量的正确定义如下: const char * const constCharPtr="hello const"; 表示指针常量,则可以放在头文件。 而不是常量指针,下面这句在头文件中,如果被多个cpp包含。则会出现重定义。

    2.8K151发布于 2018-06-08
  • 来自专栏C/C++基础

    C++临时变量的常量

    1.认识临时变量的常量性 关于临时变量的常量性,先看一段代码。 2.临时变量常量性的原因 为什么临时对象作为引用参数传递时,形参必须是常量引用呢?很多人对此的解释是临时变量是常量,不允许赋值改动,所以作为非常量引用传递时,编译器就会报错。 注意,这里与《C++编程思想》在第八章中的“临时量”小节中认为“编译器使所有的临时量自动设为const”的说法有些不同。 那编译器为何作出如此限制呢? 但如果把一个临时变量当作非const引用参数传进来,由于临时变量的特殊性,临时变量所在的表达式执行结束后,临时变量就会被释放,所以,一般说来, 修改一个临时变量是毫无意义的,据此,C++编译器加入了临时变量不能作为非 ---- 参考文献 [1]c++中临时变量不能作为非const的引用参数 [2]C++编程思想[M].刘宗田译.8.3.2.1临时量

    2.4K31发布于 2019-02-22
  • 来自专栏全栈程序员必看

    c++常量指针和指针常量_指针指向二维数组

    ** 一:常量 ** 常量指针,指针常量,常量指针常量 a)常量定义:不可修改的值,例如250,’A’ b)const关键字功能:将变量常量化,四种形式 (1)const可以修饰普通变量,一旦修饰该变量 ,该变量就当做常量看待,不可再更改 Const int a=250;//将变量a常量化 A=200;//gcc编译器报错 (2)常量指针:不能通过指针变量来修改指向的内存区域的数据,主要目的是保护数据不可篡改 2(也可以直接强转) printf("%#x\n",*(char *)(p3+1)); printf("%#x\n",*(char *)(p3+2)); printf("%#x\ n",*(char *)(p3+3)); printf("************************\n"); //2、获取两字节 short *p5=(short *)p3 ("%#x\n",*(short *)(p3+2)); printf("************************\n"); //3、获取字节 int *p6=(int *

    1.3K20编辑于 2022-09-27
  • 来自专栏全栈程序员必看

    c++常量表达式_定义字符串常量

    C++中的const关键字可以声明运行时常量,但有的时候需要编译时常量。 例如定义数组需要的是编译时常量。 C++11通过constexp来声明常量,具有编译时常量性。 constexpr值 constexpr int size = 3; int a[size] = { 0 }; constexpr函数 constexpr int size() { return 3; } int a[size()] = { 0 }; 常量表达式是一个函数,该函数具有以下限制: 函数中只能有一条return语句 函数必须有返回值 在使用前必须定义 return返回语句表达式中不能使用非常量表达式的函数 只能是一个常量表达式 一个constexpr函数,只允许包含一行可执行代码,但允许包含typedef、 using 指令、静态断言等。

    87520编辑于 2022-11-11
  • 来自专栏韩曙亮的移动开发专栏

    C++C++ 引用详解 ⑨ ( 常量引用初始化 | C C++ 常量分配内存的四种情况 )

    一、常量引用初始化 1、使用 " 普通变量 " 初始化 " 常量引用 " 使用 " 普通变量 " 初始化 " 常量引用 " , 就是将 普通变量 赋值给 常量应用 , 也可以理解为 将 变量转为常量 ; " 常量 / 字面量 " 初始化 " 常量引用 " 在 博客 【C++】C 语言 和 C++ 语言中 const 关键字分析 ( const 关键字左数右指原则 | C 语言中常量的原理和缺陷 | C " , 引用一个字面量 , 字面量 是 数值 , 这是合法的 ; // 常量引用 引用字面量 , 不会报错 const int& n = 30; 上述用法 , C++ 编译器 会为 常量引用 n 分配一个内存空间 , 这是 const 常量分配内存空间的 三种情况之一 ; 3、C / C++ 常量分配内存的四种情况 C 语言中 const 常量 是 只读变量 , 有独立的存储空间 ; C++ 语言中的 代码示例 : // 包含 C++ 头文件 #include "iostream" // 使用 std 标准命名空间 // 该命名空间中 , 定义了很多标准定义 using namespace std

    63230编辑于 2023-10-15
  • 来自专栏python3

    【Go语言】【3】GO语言常量

    一、字面常量 在说明字面常量之前先说一下魔鬼数字,哪么什么是魔鬼数字呢? //布尔类型的字面常量 "ok"          //字符串类型的字面常量 当然GO还有复数常量,如3+2i 二、常量 和其它语言(C、C++、Java等)类似,由const关键字修饰,例如: const const flag = false const isRead = true const str = "ok" const bookName = "Go language" const rect = 3 width = 36     flag = false     isRead = true     str = "ok"     bookName = "Go language"     rect = 3 PI float64 = 3.1415926535897932 3常量定义语句不用分号结束 在Java或C等语言中,一般都是这样定义:const str string = "ok";但在GO中懒得把分号

    2.4K10发布于 2020-01-07
  • 来自专栏Node.js开发

    C++中的常量与关键字

    图片宏常量 define,一般定义在文件头const 在代码中定义常量使用方式不一样。 宏定义 #define 和常量 const 的区别类型和安全检查不同宏定义是字符替换,没有数据类型的区别,同时这种替换没有类型安全检查,可能产生边际效应等错误;const常量常量的声明,有类型区别,需要在编译阶段进行类型检查编译器处理不同宏定义是一个 "编译时"概念,在预处理阶段展开,不能对宏定义进行调试,生命周期结束与编译时期;const常量是一个"运行时"概念,在程序运行使用,类似于一个只读行数据存储方式不同宏定义是直接替换,不会分配内存,存储于程序的代码段中 ;const常量需要进行内存分配,存储于程序的数据段中定义域不同void f1 (){ #define N 12 const int n 12;}void f2 (){ cout<<N <<endl; //正确,N已经定义过,不受定义域限制 cout<<n <<endl; //错误,n定义域只在f1函数中}定义后能否取消宏定义可以通过#undef来使之前的宏定义失效const常量定义后将在定义域内永久有效

    61930编辑于 2023-06-08
  • 来自专栏CSDN旧文

    c++从入门到进阶--引用与常量

    一·常量表达式和constexpr与const 常量表达式概念:值不会改变并且在编译过程中就能计算出结果的表达式。 a=10;//const引用仅对自己可参与的操作进行了限定对所指向的对象本身是不是常量未作限定。因为指向的对象也可能不是const,所以允许通过其他途径改变它的值。 int; int *poi=new int(1000); /* new表达式的形式 1.分配单个对象new 类型,new 类型(初始值) 2.分配多个连续存储的对象 new 类型[数组大小] 3. 字符串流stringstream是 C++ 提供的一个字符串流(stream),和iostream、fstream有类似的操作方式 istringstream 从string中读取数据 定义 istringstream []={1,2,3,4} for(int ele :arr) { cout<<ele<<endl; } vector<int > demo={1,2,3,4};//结合auto关键字可以方便地遍历STL

    1.1K20发布于 2020-10-28
领券