【c++】指针常量与常量指针
提示:仔细看到结尾,必有收获
文章目录
- 前言
- 一、情况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++】指针常量与常量指针相关推荐
- C++ 笔记(27)— 指针变量、数组和指针、指针数组、数组指针、指针常量与常量指针
1. 什么是指针变量? 指针变量是专门有一个变量来存放指针. int main(int argc, char *argv[]) {int a = 10;int *p = &a; //通过取地址 ...
- 常引用、常量指针、指针常量、指向常量的常指针、空指针与野指针解释
1.一.基础知识 引用并非对象 引用必须初始化 引用只能绑定在对象上,而不能与字面值或某个表达式的计算结果绑定在一起 类型要严格匹配 int &a = 10; //错误:引用类型的初始值必须是 ...
- 常量指针与指向常量的指针
这两个概念经常很容易混淆,下面简单分析一下 1.常量指针: int * const p : const p 就是一个常量,然后再看*,可以看出是一个常量类型的指针,即int类型的常量指针.不能修改 ...
- [C++] 指向常量的指针 VS 指针类型的常量
指向常量的指针 VS 指针类型的常量 const 修饰指针时的位置不同,作用也不相同. 1. 指向常量的指针 不能通过指向常量的指针改变所指对象的值,但指针本身可以改变,可以指向另外的对象. 例: i ...
- [C++基础]018_常量指针和指向常量的指针
先来看一下什么是常量指针,什么是指向常量的指针吧! 1. 常量指针定义 1 int * const ptr = new int(); 2. 指向常量的指针 1 const int* ptr; 上面已经 ...
- 【错误记录】C 语言中通过指针操作字符串常量出错记录 ( 只有 栈内存 或 堆内存 中的数据才能通过指针修改 | 不要通过指针修改常量区的字符串 )
文章目录 一.报错记录 二.修改方案 一.报错记录 执行下面的代码 , 报错如下 : 执行的错误代码 : #include <stdio.h> #include <stdlib.h& ...
- 【C 语言】字符串 一级指针 内存模型 ( 指定大小字符数组 | 未指定大小字符数组 | 指向常量字符串的指针 | 指向堆内存的指针 )
文章目录 一.字符串 一级指针 内存模型 1.指定大小字符数组 2.未指定大小字符数组 3.指向常量字符串的指针 4.指向堆内存的指针 一.字符串 一级指针 内存模型 #include <std ...
- C++ 指向常量的指针与指针类型的常量
(1)声明指向常量的指针时,不能通过指针来改变所指对象的值,但指针本身可以改变,可以指向另外的对象. #include<iostream>using namespace std;int m ...
- c++ 指针常量,常量指针
当const遇到指针 一般来说,const修饰指针可以分为下面的集中情况. 描述 例子 含义 备注 const在*的左边 const int *b=&a; int const *b=& ...
- 指针常量和常量指针简单区分理解
哪个放在后面哪个是主体,更重要一些 指针常量(指针本身就是常量) 主体为常量,const放 * 后面,形如:int * const x. 因为指针本身就是常量,所以指向的地址不可改变,但地址里的内容可 ...
最新文章
- Python数据类型之变量
- 2021年Q2:全球超大规模数据中心数量增至659个
- 申请Let's Encrypt通配符HTTPS证书(转)
- linux双机ssh互信方法总结
- raspberry树莓派安装CUPS实现打印服务器共享HP P1007打印机
- “玲珑杯”ACM比赛 Round #24: C. この戦いが終わったら(BFS+bitset优化暴力)
- python从语音生成MFCC特征
- [个人笔记] 关于linux的常见问题合集
- 无法启动IE调试vs2008的一个解决办法
- 到底什么是模型预测控制MPC(一)
- Jetson Nano python中文语音播报数字距离 基于pyttsx3
- 与戴尔科技同行,与远见如影随形
- codeforces379a Alyona and mex
- linux ftp客户端 pasv 227,FileZilla客户端连接腾讯云FTP服务器时出现“227 Entering Passive Mode”...
- 测试 这篇是拿来测试51ditu的OpenAPI的
- 关于srand函数的疑问
- JFinal+Quartz动态任务调度控制台
- Redis-5.0.5集群配置
- SQL Server数据库建表以及使用方法
- 福利:亲测腾讯云轻服务器248可以免费升级到448配置了
热门文章
- C语言随机生成26个字母,菜鸟求助,写一个随机输出26个英文字母的程序
- enclosing type java_Java ResolvedJavaType.getEnclosingType方法代码示例
- c语言不定长参数函数,DEFUN 如何定义支持不定长参数的函数
- Kafka负载均衡策略
- java DataInput接口
- Linux系统下Nginx支持ipv6
- 详解JS中的事件机制(带实例)
- FastJSON应用前测试
- Win10 不火不行!Edge 无缝兼容 Chrome扩展
- wordpress代码高亮插件coolcode