const的指针

C++用const修饰指针共有四种写法(前两种一样):

int a = 100,b = 10;

1  const int *p = &a;
2  int const *p = &a;
3  int *const p = &a;
4  const int *const p = &a;

1、首先说第一种,第一种定义了一个指向常量的指针,当然也可以指向变量,但是指针本身并不是常量,所以可以改变指针的指向,像这样:

p = &b;
*p = b; //错误,因为p是指向const的指针,不能通过它改变所指向对象的值。所谓指向产量的指针,仅仅要求不能通过该指针改变对象的值,而没有规定那个对象的值不能通过其他途径改变。

2、第二种第一的方法和第一种完全一样,所以请忘掉它,只用第一种即可。

3、这种指针被叫做常量指针,这里的const可以看作是用来修饰p的,就是说此处的指针是一个常量指针,一旦被创建,它所指向的地址就不能再改变,所以要在定义的时候初始化。

p = &b;//错误,因为p是静态指针,已经指向了a的地址,不能再改变
&p = b;//正确,p不是指向const对象,而是指向int型的a,a是变量  PS:要想存放常量对象的地址,只能使用指向常量的指针

4、相当于前面的综合,既不能改变指针的指向,也不能通过指针改变它指向对象的内容。

时间: 2024-10-08 06:23:13

const的指针的相关文章

速记const 指针与指向const的指针

指向const的指针,它的意思是指针指向的内容是不能被修改的.它有两种写法. ` const int* p; (推荐) int const* p;` 再说const指针,它的意思是指针本身的值是不能被修改的.它只有一种写法 int* const p=一个地址; (因为指针本身的值是不能被修改的所以它必须被初始化) 这两种情况很难分清,你只需注意在const后面的是*符号还是变量,*在后说明,const的是指针指向的对象,变量在后说明const的是指针本身 版权声明:本文为博主原创文章,未经博主允

const与指针修改const对象

我们都知道const对象作用是声明变量为常量,在程序中除非显示转换,否则无法修改. 本文针对显示修改的情况,提醒了一种隐式的错误,以及解决办法. 考虑下面的代码: #include<iostream> int main(){ const int a=0; int *p=const_cast<int*>(&a);//&a返回int *,const_cast<int*>显示转换为int*. *p =1; int b=*p; int c=a; std::cou

当const遇到指针

const 是c++中常用的修饰符,用它修饰的数据是无法改变的,所以当const遇到指针时就会出现几种情况: const int *p1; //代表了指向常量的指针变量,意思就是指针自身可以改变,他们可以指向其他地址,但是他们指向地址中的数据是不能改变的; int const *p2; //同上; int* const p3; //代表常量指针,意思是指针自身不能改变,但是他们指向地址中的数据是可以改变的; const int* const p4; //代表指向常量的常量指针,指针自身不能改变,

const与指针的纠缠

当使用带有const的指针时其实有两种意思.一种指的是你不能修改指针本身的内容,另一种指的是你不能修改指针指向的内容. 先说指向const的指针,它的意思是指针指向的内容是不能被修改的.它有两种写法.      const int* p; (推荐)       int const* p;      p是一个指针,它指向的内容是const int 类型.p本身不用初始化它可以指向任何标示符,但它指向的内容是不能被改变的. 再说const指针,它的意思是指针本身的值是不能被修改的.它只有一种写法  

比较常见的const与指针的组合情况

1.对于普通的const与基本类型组合,都是表示的是这是一个常量, const int a; int const a; 表示的意思是一样的,a是一个常量,不可改变 2.对于const与指针组合在一起,可以将const理解为内容,*理解为指针,誰在前面谁不能改变,誰在前面先读谁 const int *a;  等价于int const *a;    const在前面所以内容不可以改变,但是指针指向可以改变.也就是常量指针 如:int const *a=b;    这样就不能再出现*a=x等其他值了,

const 和指针

c++用了那么久,觉得 const 和指针配合到一起的时候就会有点点分不出来. 如下: const Data* pData; Data const * pData Data * const pData const Data * const pData Data const * const pData 是不是有点晕? 我其实用得最多的是 const Data* pData, 也理解该语句是定义 pData指向的对象是不允许修改的(不能通过pData指针调用非const方法). 那么Data * c

const,指针与引用的关系

看完C++Primer第二章后,对于const,指针和引用以及后面的constexpr,auto之类的关系异常混乱,特此整理. 一.const必须初始化 const int i = 42; const int j = get_size(); 二.const 和 引用    1.常量引用(对常量的引用):将引用与一个常量对象绑定 const int ci = 42; const int &r1 = ci; 2.除此之外,允许一个常量引用绑定一个非常量的对象,字面值或表达式 int i = 42;

结合示例说明C++中const和指针结合时怎么理解

在之前随笔<C++中const使用要点(一)>中简单叙述了const int*.int* const和const int* const的区别,记住三句话就能在实际运用时用对,但是看书时发现了指针常量.常量指针这些名词,发现明白这些概念对阅读文章时还是比较重要的. 关键:const和指针结合时代码从右往左看 1.常量指针(const pointer) 概念:常量是形容词,也就是说常量指针是一个指针,用const修饰的指针. 按照代码从右往左(概念名词从左往右)的阅读顺序,不妨试着写一下. Ste

C++中的const和指针组合

在C++里,const修饰指针有以下三种情况 (1)指针常量:即指向常量的指针 const  int *p或者int const *p const在*前,,可以这样理解它的功能,因为const在*前,所以p指向的这个int变量对于*p来说是const的,即不能通过*p改变这个变量的值,但是变量本身可以随便改变自己的值.另外也可以改变p的指向. 例: int x=2; int y=3; const int *p=&x; *p=4;   //错误,不能通过*p改变变量的值 x=4;    //可以,

用const修饰指针

其实很简单,无奈老是记不住,那就单独写出来吧! a.指针本身不可变,即不可指向其他对象: char* const pContent = “abcde”; pContent[2] = ‘f’;     //合法 pContent = “abfde”;    //不合法 b.指针所指向的对象不可变,即指针不可以修改所指向的对象 const char *pContent = “abcde”; //或者 char const *pContent = “abcde”;     //上下两种情况相同 pCo