const 常量声明

int *pi;             pi是一个普通的指向整型指针

int const *pci;   是一个指向整型常量的指针。你可以修改指针的值,但你不能修改它所指向的值

int *const cpi;   声明pci为一个指向整型的常量,此时指针是常量,它的值无法修改,但你可以修改它所指向的整型值。

int  const  *const cpci  无论是指针本身还是它所指向的值都是常量,不允许修改。

时间: 2024-10-31 16:48:46

const 常量声明的相关文章

const常量类型

1.定义:const常量类型表示一个”常值变量“,其值是不能被修改的变量.即一旦变量被声明为const类型,编译器将禁止任何试图修改该变量的操作. 2.声明:const <声明数据类型> 常量或常量表达式初始化. 3.与宏定义指令#define的区别: #define只是做简单的文本替换,不会做类型检查. const声明时,编译器替换变量时会做严格的类型检查,只有与声明数据类型相同时才做替换. 4.常见的用途: 使用const限定函数的参数和返回值. 1)当函数的参数限定为const类型时,说

c++ const常量的实现机制(转载)

const关键字的基本思想就是将一个变量变成常量,试图从语言设计者的角度去分析引入该关键字的动机. 我猜测原因如下: 1)提醒程序员,某些值是常量,如PI.或该值在程序运行期间是不变的,防止程序员误修改.对于多模块开发,头文件引用复杂的系统来说,这是很重要的,如果不能在编译期阻止常量被误修改,那么这些修改将引起运行时调试困难的问题. 2)改进c语言中的#define预处理宏,1)中提到的问题使用#define宏也能够得到解决,但是#define宏作为解决方案存在一些缺陷:a)#define宏会产

const常量与宏定义区别

(1) 编译器处理方式不同 define宏是在预处理阶段展开. const常量是编译运行阶段使用. (2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开. const常量有具体的类型,在编译阶段会执行类型检查. (3) 存储方式不同 define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存. const常量会在内存中分配(可以是堆中也可以是栈中). (4)const  可以节省空间,避免不必要的内存分配. 例如: #define PI 3.14159 //

宏常量,宏替换,const常量

(1)宏常量也称为符号常量,是指用一个标识符号来表示的常量,宏常量是由宏定义编译预处理命令来定义的,宏定义的一般形式:#define 标识符 字符串 宏定义中的标识符被称为宏名,将程序中出现的宏名替换成字符串的过程称为宏替换,宏替换时是不做任何语法检查的,因此,只有在对已经被宏展开后的源程序进行编译时才会发现语法错误 (2)const常量:使用宏常量的最大问题是,宏常量没有数据类型.那么是否可以声明具有某种数据类型的常量呢?这就是const常量 const常量被编译器放在只读存储区,不允许在程序

const常量和#define宏常量的区别

http://blog.csdn.net/lifengguo_njupt/article/details/7992332 C++可以用const定义常量,也可以使用#define来定义常量,但是前者比后者有更多的优点: 1,const常量有数据类型,而宏常量没有数据类型,编译器可以对前者进行静态类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能产生意想不到的错误(边际效应) 2,有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试. 所以在C++中

我错误的去试图用QList里面的at方法改变const常量的值

在做曲线工厂的程序的时候,我写了一行代码是这样的: AllLines.at(cruveSecions).p1().setY(20); AllLines是QList<QLineF>类型的,cruveSections是int类型的,这里我犯了一个很低级但是很容易犯的错误,我本是图个方便,然后导致AllLines里面的数据老是更新不了,我很纳闷,最后同事通过查API给我找出了错误的原因.是这样的QList里面通过at访问出来的是个常量,里面的值不能修改成功,但是我很纳闷编译器也不报错,我想可能是se

关于C++中的Const常量

一. 为什么需要常量 (1)如果不使用常量,直接在程序中填写数字或字符串,将会有什么麻烦: 1. 程序的可读性(可理解性)变差.程序员自己会忘记那些数字或字符串是什么意 思,用户则更加不知它们从何处来.表示什么. 2. 在程序的很多地方输入同样的数字或字符串,难保不发生书写错误. 3. 如果要修改数字或字符串,则会在很多地方改动,既麻烦又容易出错. (2)尽量使用含义直观的常量来表示那些将在程序中多次出现的数字或字符串. 例如: #define MAX 100 /* C 语言的宏常量 */ co

《从零开始学Swift》学习笔记(Day58)—— Swift编码规范之变量或常量声明规范

原创文章,欢迎转载.转载请注明:关东升的博客 声明是在声明变量.常量.属性.方法或函数和自定义类型时候需要遵守的规范. 首先变量或常量时每行声明变量或常量的数量推荐一行一个,因为这样以利于写注释.示例代码如下. 推荐使用: let level = 0 var size = 10 不推荐使用: let level = 0; var size =10 变量或常量的数据类型,如果有可能应尽可能采用类型推断,这样代码很简洁.示例代码如下. 推荐使用: let level = 0 var size = 1

const常量和readyonly常量区别

1.const常量为静态常量:readyonly常量为动态常量:2.const常量在编译时值被确定,在运行时值为编译时值:readyonly常量,在编译时为类型的默认值(非指定的默认值),在运行时值被确定:3.const常量无内存消耗:readyonly存常量有内存消耗:4.const常量为引用类型,值为string.Empty或null:readyonly为值类型,可以为任何值: 如: const int A=1; readyonly int B=1; -------------------