提示:仔细看到结尾,必有收获

文章目录

  • 前言
  • 一、情况1:
  • 二、情况2:
  • 情况3:
  • 总结

前言


一、情况1:

1、首先定义一个变量,不赋初值。

Const int * ptr = &a;
const -常量,int*- 指针,因此连起来:常量指针。所以指针ptr指向如下所示:

cout << ptr << endl; 输出:0034FCC8
cout << ptr << endl; 输出:-66666666*
*ptr = 2;//该语句非法,因为该指针ptr指向的地址(0034FCC8)的变量值(-66666666)被Const修饰了,因此无法更改。但是可以执行以下操作:

将变量b的地址赋值给ptr,此时:

cout << ptr << endl; 输出:0034FCC9
cout << ptr << endl; 输出:1*
*ptr = 2;//该语句非法,因为该指针ptr指向的地址(0034FCC9)的变量值(1)被Const修饰了,因此无法更改。

总结:常量指针ptr指向的地址可以更改,(从0034FCC8变成了0034FCC9),但是不能通过该指针去修改此时ptr指向的地址(0034GCC9)上面的数值。

二、情况2:

int *Const ptr = &a;
int *- 指针,const -常量,因此连起来:指针常量。
所以指针ptr指向如下所示:
cout << ptr << endl; 输出:0034FCC8

cout << ptr << endl; 输出:1*
*ptr = 2;//该语句合法,因为该指针ptr指向的地址(0034FCC8)的变量值(1)没有被Const修饰了,因此可以更改。

但是不能执行以下操作:

ptr = &b;//此语句非法!!!

因为此时的Const修饰的是指针ptr的指向,此时指向的地址为(0034FCC8),因此不能更改,但是在该地址上的数值可以被更改。

情况3:

Const int * Const ptr = &b;

此时以下的操作都是非法的:

*ptr = 2;//非法
ptr = &a;//非法

理由如下图所示:

此时ptr指向的地址以及该地址上的数值都被Const修饰了,因此二者都无法更改。

总结

Const int * ptr 常量指针,ptr指向的地址上面的数值不能改变,但是ptr指向的地址可以改变,地址改变之后,ptr指向的新的地址上面的数值不能通过*ptr改变。

int * Const ptr 指针常量,ptr指向的地址不能改变, 但是可以通过*ptr去改变该地址上的 数值。

Const int * Const ptr 常量指针常量,ptr指向的地址不能改变,该地址上的数值也不能改变。

【c++】指针常量与常量指针相关推荐

  1. C++ 笔记(27)— 指针变量、数组和指针、指针数组、数组指针、指针常量与常量指针

    1. 什么是指针变量? 指针变量是专门有一个变量来存放指针. int main(int argc, char *argv[]) {int a = 10;int *p = &a; //通过取地址 ...

  2. 常引用、常量指针、指针常量、指向常量的常指针、空指针与野指针解释

    1.一.基础知识 引用并非对象 引用必须初始化 引用只能绑定在对象上,而不能与字面值或某个表达式的计算结果绑定在一起 类型要严格匹配 int &a = 10; //错误:引用类型的初始值必须是 ...

  3. 常量指针与指向常量的指针

    这两个概念经常很容易混淆,下面简单分析一下 1.常量指针: int * const p   : const p 就是一个常量,然后再看*,可以看出是一个常量类型的指针,即int类型的常量指针.不能修改 ...

  4. [C++] 指向常量的指针 VS 指针类型的常量

    指向常量的指针 VS 指针类型的常量 const 修饰指针时的位置不同,作用也不相同. 1. 指向常量的指针 不能通过指向常量的指针改变所指对象的值,但指针本身可以改变,可以指向另外的对象. 例: i ...

  5. [C++基础]018_常量指针和指向常量的指针

    先来看一下什么是常量指针,什么是指向常量的指针吧! 1. 常量指针定义 1 int * const ptr = new int(); 2. 指向常量的指针 1 const int* ptr; 上面已经 ...

  6. 【错误记录】C 语言中通过指针操作字符串常量出错记录 ( 只有 栈内存 或 堆内存 中的数据才能通过指针修改 | 不要通过指针修改常量区的字符串 )

    文章目录 一.报错记录 二.修改方案 一.报错记录 执行下面的代码 , 报错如下 : 执行的错误代码 : #include <stdio.h> #include <stdlib.h& ...

  7. 【C 语言】字符串 一级指针 内存模型 ( 指定大小字符数组 | 未指定大小字符数组 | 指向常量字符串的指针 | 指向堆内存的指针 )

    文章目录 一.字符串 一级指针 内存模型 1.指定大小字符数组 2.未指定大小字符数组 3.指向常量字符串的指针 4.指向堆内存的指针 一.字符串 一级指针 内存模型 #include <std ...

  8. C++ 指向常量的指针与指针类型的常量

    (1)声明指向常量的指针时,不能通过指针来改变所指对象的值,但指针本身可以改变,可以指向另外的对象. #include<iostream>using namespace std;int m ...

  9. c++ 指针常量,常量指针

    当const遇到指针 一般来说,const修饰指针可以分为下面的集中情况. 描述 例子 含义 备注 const在*的左边 const int *b=&a; int const *b=& ...

  10. 指针常量和常量指针简单区分理解

    哪个放在后面哪个是主体,更重要一些 指针常量(指针本身就是常量) 主体为常量,const放 * 后面,形如:int * const x. 因为指针本身就是常量,所以指向的地址不可改变,但地址里的内容可 ...

最新文章

  1. Python数据类型之变量
  2. 2021年Q2:全球超大规模数据中心数量增至659个
  3. 申请Let's Encrypt通配符HTTPS证书(转)
  4. linux双机ssh互信方法总结
  5. raspberry树莓派安装CUPS实现打印服务器共享HP P1007打印机
  6. “玲珑杯”ACM比赛 Round #24: C. この戦いが終わったら(BFS+bitset优化暴力)
  7. python从语音生成MFCC特征
  8. [个人笔记] 关于linux的常见问题合集
  9. 无法启动IE调试vs2008的一个解决办法
  10. 到底什么是模型预测控制MPC(一)
  11. Jetson Nano python中文语音播报数字距离 基于pyttsx3
  12. 与戴尔科技同行,与远见如影随形
  13. codeforces379a Alyona and mex
  14. linux ftp客户端 pasv 227,FileZilla客户端连接腾讯云FTP服务器时出现“227 Entering Passive Mode”...
  15. 测试 这篇是拿来测试51ditu的OpenAPI的
  16. 关于srand函数的疑问
  17. JFinal+Quartz动态任务调度控制台
  18. Redis-5.0.5集群配置
  19. SQL Server数据库建表以及使用方法
  20. 福利:亲测腾讯云轻服务器248可以免费升级到448配置了

热门文章

  1. C语言随机生成26个字母,菜鸟求助,写一个随机输出26个英文字母的程序
  2. enclosing type java_Java ResolvedJavaType.getEnclosingType方法代码示例
  3. c语言不定长参数函数,DEFUN 如何定义支持不定长参数的函数
  4. Kafka负载均衡策略
  5. java DataInput接口
  6. Linux系统下Nginx支持ipv6
  7. 详解JS中的事件机制(带实例)
  8. FastJSON应用前测试
  9. Win10 不火不行!Edge 无缝兼容 Chrome扩展
  10. wordpress代码高亮插件coolcode