指针常量是指定义的指针只能在定义的时候初始化,之后不能改变其值,格式如下:

数据类型 * const 指针常量名称

比如 : char * const p1 ;  int * const p2;

常量指针的值不能改变,但是其指向的内容却可以改变。

char a[5]="abcd";
char *const b =a;

b[0] = 'c';

这样子 字符串a就变成了“cbcd”

常量指针是指向常量的指针,因为常量指针指向的对象是常量,因此这个对象的值是不能够改变的。

定义格式如下:

数据类型 const * 常量指针名称

或者

const 数据类型 * 常量指针名称

如: int const *p; const int *p;

char a[5]="ba";
char b[5]="ab";
const char *c = a;
const char *d = b;

a[0] = '7';
b[0] = '8';

c = b;
d = a;//这能编译通过

//
c[0] = '6'//编译通不过,因为c是常量指针,指向的对象是常量,不能改变

指针常量是强调指针的不可改变性,而常量指针强调的是指针对其所指对象的不可变性。无论是指针常量还是常量指针,其最大的用途就是作为函数的形式参数,保证实参在被调用的时候不可更改。

两者的结合写法:

const char *const c 这种表示 c不能更改,c指向的内容也不能通过c进行更改

char str1[] = "abc";
char str2[] = "abc";

const char str3[] = "abc";
const char str4[] = "abc";

const char* str5 = "abc";
const char* str6 = "abc";

char* str7 = "abc";
char* str8 = "abc";

cout<<(str1==str2)<<endl;
cout<<(str3==str4)<<endl;
cout<<(str5==str6)<<endl;
cout<<(str7==str8)<<endl;

答案是  0011

原因是 str1 str2 str3 str4 是数组变量,它们有各自的内存空间,而数组名就是数组的首地址。由于四个数组分别定义了不同的内存空间,所以这四个数组变量地址各不相同。。。。

str5 str6 str7 str8是指针,它们指向相同的常量区域。

转载于:https://www.cnblogs.com/ShalenChe/p/5470966.html

指针常量和常量指针的区别相关推荐

  1. 【转】const int *p和int * const p的区别(常量指针与指向常量的指针)

    [转]作者:xwdreamer   出处:http://www.cnblogs.com/xwdreamer 对于指针和常量,有以下三种形式都是正确的: const char * myPtr = &am ...

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

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

  3. 数组指针和指针数组,函数指针和指针函数,常量指针和指针常量,常量引用

    一.数组指针和指针数组 1.数组指针(行指针) 首先要知道数组指针是指向数组的指针.所以数组指针本质是个指针,只不过指向一个数组而已.格式为:T (*ptr)[]. 注意:"[]" ...

  4. 【C++】由指针常量和常量指针引发的问题

    今天在写一个C++程序的时候,要用到STL的set容器,而且我想让它利用自定义的排序准则来实现自动排序.而且set中元素类型是指向自定义的结构体的指针.结果运行总是出错. 下面先贴出起初的代码: #i ...

  5. 常指针和指向常量的指针

    最近在学习引用,有一些学习心得,记录如下: 1:引用是变量的别名 int a; int b&=a; 要注意引用只有声明,而没有定义,并且引用必须在声明的时候进行初始化,一旦与某个变量关联起来, ...

  6. c语言指针常量和常量指针,详解C语言中的常量指针和指针常量

    概述对于新手来说,指针在c语言里总是一个非常难以理解的概念.在这篇文章中,我们将解释常量指针,指针常量,const pointer to const(ps:楼主以为这可以翻译成指向常量的常量指针)的区 ...

  7. C++指针详解(指针初始化与回收,常量与指针,引用与指针)

    C++指针详解 1.指针的定义初始化以及回收 2.常量与指针 1)常量指针(常指针) 2)指针常量 3)总结 3.引用与指针 1.指针的定义初始化以及回收 指针是一个地址,这个地址内存放数据,这些数据 ...

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

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

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

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

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

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

最新文章

  1. 通过WebAssembly在浏览器运行PHP
  2. hdu 2842 Chinese Rings 矩阵快速幂
  3. MFC控件的绘制与响应顺序——ZOrder
  4. Laravel 5.2问题-----postman进api的post请求,为什么出现Forbidden?
  5. html中列表、表格、合并单元格
  6. ES5(一)——保护对象
  7. iic总线从机仲裁_IIC协议底层原理超详细解析!示波器,逻辑分析仪多图预警
  8. 【Python】理解Python(1) - Python数据模型,is关键字,类型
  9. android 8.0 用户体验优化--day02
  10. 从零开始——基于角色的权限管理01(补充)
  11. MAC 下MySQL常用命令
  12. 模拟集成电路—拉扎维第三章知识点
  13. 射频百科 | 高速射频连接器
  14. 莫烦 Python Pandas
  15. 科罗拉多大学波尔得分校计算机科学,科罗拉多大学波尔得分校计算机科学本科专业-(20页)-原创力文档...
  16. mysql strlength_mySQL教程 第7章 存储过程和函数
  17. 快码加编——代码生成神器
  18. 如何利用excel和python构建拟合曲线预测可转债股票价格?
  19. class文件格式解析
  20. EventSource+eggjs

热门文章

  1. Atitit.Atiposter 发帖机 信息发布器 v7 q516
  2. Atitit. 委托的本质 c#.net java php的比较
  3. 证券类私募主要需求及核心服务商
  4. 中移杭研 | 面向互联网应用的实时业务风控系统
  5. python抽奖教程_详解用python写一个抽奖程序
  6. 【元胞自动机】基于matlab元胞自动机单边教室疏散【含Matlab源码 1207期】
  7. 【肌电信号】基于matlab GUI脉搏信号处理系统【含Matlab源码 1062期】
  8. 【图像配准】基于matlab GUI互相关图像配准【含Matlab源码 853期】
  9. php主页备案号底部中间,如何将网站备案号放到网站底部
  10. kubectl 获取不到node_排查 Node.js 服务内存泄漏,没想到竟是它?