常指针和指向常量的指针和指向常量的常指针

(1)指向常量的指针:是一个指向的内容是常量的指针变量,const int *p=&x;不可修改*p的内容,但可以让指针p指向另一个地址,和int const *p一样

(2)常指针:int *const p=&x指针本身是个常量,固定指向某一变量,因此p不可变,但是*p可变

(3)指向常量的常指针:const int *const p=&x,指针p永远指向x,并且不能通过它修改它指向的地址的内容

时间: 2024-12-25 12:32:39

常指针和指向常量的指针和指向常量的常指针的相关文章

直观理解C语言中指向一位数组与二维数组的指针

一维数组和指针: 对于一位数组和指针是很好理解的: 一维数组名: 对于这样的一维数组:int a[5];  a作为数组名就是我们数组的首地址, a是一个地址常量 . 首先说说常量和变量的关系, 对于变量来说, 用箱子去比喻再好不过了, 声明一个变量就声明一个箱子,比如我们开辟出一个苹果类型的箱子, 给这个变量赋值就是把盛放苹果的箱子中放入一个实实在在的苹果, 这就是变量的赋值.  而对于数组来说, 就是一组类型相同的箱子中,一组苹果箱子, 可以放入不同的苹果. 一维数组空间: 变量被声明后, 我

C++标准的规定:非常量的引用不能指向临时对象(转载)

C++标准的规定:非常量的引用不能指向临时对象: 为了防止给常量或临时变量(只有瞬间的生命周期)赋值(易产生bug),只许使用const引用之. 下面的内容转自: http://blog.csdn.net/liuxialong/article/details/6539717 概括一下: 不能把临时对象作为实参传给非const引用. 例如: void conv(string &str) { } int main() { conv("dasd"); // 这里错了,编译器自动生成一

截图时如何显示鼠标指针,如何带鼠标指针截图,带鼠标指针截图的方法,怎么在截图时把鼠标指针一起截上

截图时如何显示鼠标指针,如何带鼠标指针截图,带鼠标指针截图的方法,怎么在截图时把鼠标指针一起截上 可以借助截图软件来实现, FSCapture(全称FastStone Capture),可是实现截图是带着鼠标指针 HprSnap.可是实现截图是带着鼠标指针 原文地址:https://www.cnblogs.com/GaoNa/p/12304366.html

基本数据类型的常量池与String类型常量池解析

抛出样例: Integer a1  = new Integer(123);        Integer a2  = new Integer(123);        System.out.println(a1 == a2);   //false  因为只要遇到new关键词,肯定会在堆里面重新分配空间给实例对象,所以两个地址肯定不同                a1  = 123;        a2  = 123;        System.out.println(a1 == a2); 

如果常量类进行改变时,只编译常量类,而使用常量的类不重新编码,这样改动实际上算没有生效(转)

在Java开发过程中有很多通用的准则,遵守这些准则能够避免很多不必要的错误发生,让代码的质量更高,下面的内容为书籍第一章<Java开发中通用的方法和准则>的阅读笔记. 一.不要在常量和变量中出现易混淆的字母 例如数字1和小写字母l容易混淆,数字0和字母o容易混淆,因此在变量或常量命名时需要避免两个同时出现. 另外命名最好遵守Java编码规范:包名全小写,类名首字母全大写,常量全部大写并用下划线分隔,变量采用驼峰命名法等等. 二.不要让常量蜕变成变量 常量应该保证在编译期就确定其值不变,而不是在

JVM 常量池、运行时常量池、字符串常量池

常量池: 即class文件常量池,是class文件的一部分,用于保存编译时确定的数据. 保存的内容如下图: 1 D:\java\test\out\production\test>javap -verbose mainTest 2 Classfile /D:/java/test/out/production/test/mainTest.class 3 Last modified 2019年4月22日; size 507 bytes 4 MD5 checksum 08699c6d713bc8967a

const修饰的常量 不能被直接修改 但是可以通过指针进行间接修改

大家都知道如下代码中,被const限定的a是不可以被直接修改的 void main() { const int a = 3; a=1; } 在C++中const修饰的常量,不能被直接修改,但是可以通过指针进行间接修改 来看下面的例子:           原意是想通过指针修改const常量a的值,但是运行后发现输出的a依然是3,a的值表面上并没有被改变. 但是查看内存窗口,发现a已经被改变,这里是编译器优化导致的,遇见a时编译器直接从寄存器中读取3给a,而不从内存中读取! 为了改善这种状况,我们

Qt之美(一):d指针/p指针详解(解释二进制兼容,以及没有D指针就会崩溃的例子。有了D指针,所使用的对象大小永远不会改变,它就是该指针的大小。这个指针就被称作D指针)good

Translated  by  mznewfacer   2011.11.16 首先,看了Xizhi Zhu 的这篇Qt之美(一):D指针/私有实现,对于很多批评不美的同路人,暂且不去评论,只是想支持一下Xizhi Zhu,在引用一下Jerry Sun的话,“C++需要宏定义就像需要设计模式一样.也许你不知道,宏是图灵完全(turing complete)的,至少LISP下是这样,C/C++需要宏,几乎所有重要的C/C++库都需要和依赖宏.这些都超过咱们的想象,宏能带给我们所谓语法糖(Synta

extern字符串常量,宏定义字符串常量,怎么选

在使用常量的时候,我看到主要有两种写法: #define RKLICURegexEnumerationOptionsErrorKey @"RKLICURegexEnumerationOptionsErrorKey" extern NSString * const RKLICURegexEnumerationOptionsErrorKey; 这两种写法孰优孰劣?或者在哪些情况下该用那种写法? 看了一下stackoverflow的几个答案: http://stackoverflow.com

Item 30 用enum代替int常量类型枚举,string常量类型枚举

1.用枚举类型替代int枚举类型和string枚举类型 public class Show { // Int枚举类型 // public static final int APPLE_FUJI = 0; // public static final int APPLE_PIPPIN = 1; // public static final int APPLE_GRANNY_SMITH = 2; public enum Apple { FUJI, PIPPIN, GRANNY_SMITH } pub