`

const 指针与指向const的指针

    博客分类:
  • C++
 
阅读更多

const 指针与指向const的指针

当使用带有const的指针时其实有两种意思。一种指的是你不能修改指针本身的内容,另一种指的是你不能修改指针指向的内容。听起来有点混淆一会放个例子上来就明白了。

先说指向const的指针,它的意思是指针指向的内容是不能被修改的。它有两种写法。

constint* p; (推荐)

intconst* p;

第一种可以理解为,p是一个指针,它指向的内容是constint类型。p本身不用初始化它可以指向任何标示符,但它指向的内容是不能被改变的。

第二种很容易被理解成是p是一个指向int的const指针(指针本身不能被修改),但这样理解是错误的,它也是表示的是指向const的指针(指针指向的内容是不能被修改的),它跟第一种表达的是一个意思。为了避免混淆推荐大家用第一种。

再说const指针,它的意思是指针本身的值是不能被修改的。它只有一种写法

int* const p=一个地址; (因为指针本身的值是不能被修改的所以它必须被初始化)

这种形式可以被理解为,p是一个指针,这个指针是指向int的const指针。它指向的值是可以被改变的如*p=3;

还有一种情况是这个指针本身和它指向的内容都是不能被改变的,请往下看。

constint* const p=一个地址;

intconst* const p=一个地址;

看了上面的内容是不是有点晕,没关系,你不用去背它,用的多了就知道了,还有个技巧,通过上面的观察我们不难总结出一点规律,是什么呢?也许你已经看出来了,什么!竟然没看也来,那只好还得听我唠叨了。这个规律就是: 指向const的指针(指针指向的内容不能被修改)const关健字总是出现在*的左边而const指针(指针本身不能被修改)const关健字总是出现在*的右边,那不用说两个const中间加个*肯定是指针本身和它指向的内容都是不能被改变的。有了这个规则是不是就好记多了。

什么还是晕,那就看下面的程序,你把它编译一下看看错误提示就明白了。

复制代码
1#include<iostream>
2
3usingnamespacestd;
4
5intmain(intargc,char*argv[])
6{
7inta=3;
8intb;
9
10/*定义指向const的指针(指针指向的内容不能被修改)*/
11constint*p1;
12intconst*p2;
13
14/*定义const指针(由于指针本身的值不能改变所以必须得初始化)*/
15int*constp3=&a;
16
17/*指针本身和它指向的内容都是不能被改变的所以也得初始化*/
18constint*constp4=&a;
19intconst*constp5=&b;
20
21p1=p2=&a;//正确
22*p1=*p2=8;//不正确(指针指向的内容不能被修改)
23
24*p3=5;//正确
25p3=p1;//不正确(指针本身的值不能改变)
26
27p4=p5;//不正确(指针本身和它指向的内容都是不能被改变)
28*p4=*p5=4;//不正确(指针本身和它指向的内容都是不能被改变)
29
30return0;
31}
复制代码
分享到:
评论

相关推荐

    详细分析c++ const 指针与指向const的指针

    主要介绍了c++ const 指针与指向const的指针的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下

    const与指针的关系

    该文档讲述了const与指针的关系,const起了如何的作用。

    const 指针

    &lt;类型&gt; const * &lt;指针变量&gt; 或 const &lt;类型&gt; * &lt;指针变量&gt; 2、常量指针: &lt;类型&gt; * const &lt;指针变量&gt; 3、指向常量的常量指针: &lt;类型&gt; const * const &lt;指针变量&gt; 或 const &lt;类型&gt; * const &lt;指针变量&gt;

    CONST指针指针

    C语言中的CONST指针,学习C语言的同学必须知道的常识

    C语言中Const指针变量(常指针)

    Const指针变量只保护其Value值不被改变,并不能保护指针所指向的地址中的值不被改变,下面一起来学习一下

    函数指针和指针函数,const的用法,指针常量,常量指针的用法

    函数指针和指针函数的区别,以及const的用法,指针常量,常量指针的用法

    虚函数与const指针

    主要包括虚函数的概念以及对于const指针的区分,非常清楚明了,希望能帮助大家便于理解。

    const指针的使用

    自己总计的关于const指针的知识点,非常精辟,拿出来和大家分享一下

    深入const int *p与int * const p的区别详解(常量指针与指向常量的指针)

    //常量的指针const char * const myPtr = &char_A;//指向常量的常量指针下面依次对这三种类型进行介绍。因为*操作符是左操作符,左操作符的优先级是从右到左,对于1.常量指针(Constant Pointers) 代码如下:int * ...

    const用法 const int *a; int * const a;

    表示pch是一个字符串常指针,该指针只能指向该字符串,不可以在让他指向另一字符串。但该字符串的内容可以变化。 const int a; //a是个整型常量 int const a; //同上 const int *a; //a是一个指向整型常量的...

    浅析C++的引用与const指针与各种传递方式

    浅析C++的引用与const指针与各种传递方式 首先我们知道 const int *p 与 int const *p 是一样的,即 *p 是常量;而 int * const p 跟上面是不一样的,即 p 是常量;我们知道引用只是一个别名,与变量共享存储空间,...

    const与指针的简单解析

    const 解析新手向,用于新手学习的const与指针的搭配问题

    C++ 中const总结

    C++ 中const总结 const 限定符把一个对象转换成一个常量,如 const int bufSize=512; 申 ...下面将详细的讨论一下 const 变量的作用域、const 指针、指向 const 对象的指 针、const 引用的相关用法。

    深入理解const 与指针

    深入理解const char*p,char const*p,char *const p,const char **p,char const**p,char *const*p,char**const p

    C++中指向对象的常指针与指向常对象的指针详解

    将指向对象的指针变量声明为const型,并使之初始化,这样指针值始终保持为其初始值,不能改变。 代码如下:Time t1(10,12,15),t2;Time * const ptr1=&t1;ptr1=&t2;定义指向对象的常指针的一般形式为 类名 * const ...

    指针常量与常指针CONST

    此程序是指针常量、常量指针改变对应值方法

    const 与 指针

    全面解释 const 的用法 以及指针与const的关系

    指向变量的常指针与指向常变量的指针详细解析

    常(量)指针常指针就是我们说的指向常量的指针,顾名思义,它是用来指向常量的。 用常指针指向常变量实际上,C++规定只能用指向常变量的指针指向常变量,普通指针指向它就会报错,原因也很容易理解,我们用普通指针...

Global site tag (gtag.js) - Google Analytics