C++ 之 指针详解篇(三)

Const指针

申明Const指针格式如下

  const int* p;

  int* const p1;

  const int* const p2;

这些含义都各不相同,所以我们必须要会使用

  p是指向整形的常量的指针,它指向的值是不可更改的。

  p1是一个指向整形的常量指针。它指向的值可以修改,但p1不能指向其他变量

  p2是一个指向整形常量的常量指针。它指向的值不能修改,且这个指针也不能指向其他变量。

示例

class A    //申明类A
{
  public:
    A();
    ~A();
    void setlength(int length){ilength = length;}
    int getlength()const{return ilength;}
    void setWidth(int width){iwidth = width;}
    int getwidth()const{return iwidth;}
  private:
    int ilength;
    int iwidth;
};
A::A()
{
   iwidth = 5;
   ilength = 10;
}
A::~A()
{
}

int _tmain(int argc, _TCHAR* argv[])
{
    A* ps = new A;  //声明了类A的指针并且动态的分配内存
    const A* pconstA = new A;  //声明了一个指向常量A的指针pconstA
    A* const pconstB = new A;  //声明了一个指向A的常指针pconstB
    cout<<"pS width: "<<ps->getwidth()<<endl;
    cout<<"pconstA: width:"<<pconstA->getwidth()<<endl;
    cout<<"pconstB: width:"<<pconstB->getwidth()<<endl;  //分别输出以上的值
    ps->setWidth(10);   //设置ps的宽度
    pconstB->setWidth(10);  //设置pconstB的宽度为10
    cout<<"ps width:"<<ps->getwidth()<<endl;
    cout<<"pconstA Width:"<<pconstA->getwidth()<<endl;
    cout<<"pconstB width:"<<pconstB->getwidth()<<endl;
    return 0;
}

输出结果为

  结合以上实例,我们可以得出结论。声明const指针和指向const对象的指针,前者,不能给它重新赋值使之指向其他对象,而后者不能用于修改它指向的对象。

时间: 2024-10-12 13:12:30

C++ 之 指针详解篇(三)的相关文章

C++ 之 指针详解篇(二)

使用关键字new动态分配内存,在new后面为其分配内存对象的类型,让编译器知道需要多少内存.new的返回值是一个内存地址,内存的地址被存储在指针中,因此将new的返回值赋给一个指针.如 short int* p; p = new short int; 或者声明指针的同时直接初始化, short int* p= new short int; 无论用哪种方式,p都指向了short int,然后就可以向变量的指针那样使用如 *p = 72; //将72放在动态内存中 使用完了指针记得一定要释放指针.可

C++ 之 指针详解篇(一)

C++的指针太重要了,我们有必要去掌握它.所以必须认真的对待指针.先来讲解什么是指针.(重点掌握) 指针是存储内存地址的变量,内存又是什么?内存是干啥用的?简单的说,就是存储一些二进制数据,它是按一定的顺序存储的线性单元结构.那一个数据又是如何存储在内存的呢?这些问题都是汇编的基础知识,如果你学过汇编理解这真的不是难事.闲话越扯越远了,通常数据的存储在内存地址中,不同的计算机它的地址也会不同.假设我们存储了一个变量是整形的,系统会自动的分配一个内存地址给它,要获取内存地址,可以用&运算符.结合示

[转]C++ 智能指针详解

C++ 智能指针详解   一.简介 由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete.程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见. 用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法.包括:std::auto_ptr.boost::scoped_ptr.boost::shared_ptr.boost::scoped_array.boost::shared

C++函数指针详解

学习c++的过程中,指针是难点,熟悉了指针之后,还有一个让人很蛋疼的难点,那就是函数指针了.本博文详细介绍一下常见的各种坑爹的函数指针. 至于指针的详细学习,推荐这篇博文C++指针详解 与数据一样,函数也有地址,函数的地址就是内存中存放函数语言代码的起始地址.函数指针就是指向这个地址.函数指针所指向的类型,就是函数本身.我们知道,指针所指向类型代表了指针所指向的内存区域的大小.所以函数指针所指向的类型,就是函数在内存中所占据内存的大小.知道了函数的起始地址和大小,所以函数指针可以很轻易的代替函数

C++ 智能指针详解

一.简介 由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete.程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见. 用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法.包括:std::auto_ptr.boost::scoped_ptr.boost::shared_ptr.boost::scoped_array.boost::shared_array.boost:

彻底搞定C语言指针详解

1.语言中变量的实质 要理解C指针,我认为一定要理解C中“变量”的存储实质, 所以我就从“变量”这个东西开始讲起吧! 先来理解理解内存空间吧!请看下图: 内存地址→ 6 7 8 9 10 11 12 13 ----------------------------------------------------------------- ... | | | | | | | |.. ------------------------------- ---------------------------

C++ 智能指针详解(转)

C++ 智能指针详解   一.简介 由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete.程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见. 用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法.包括:std::auto_ptr.boost::scoped_ptr.boost::shared_ptr.boost::scoped_array.boost::shared

C++培训 C++ 智能指针详解

C++培训 C++ 智能指针详解 一.简介 由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete.程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见. 用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法.包括:std::auto_ptr.boost::scoped_ptr.boost::shared_ptr.boost::scoped_array.boost::sh

C++智能指针详解(真的很经典 )

C++ 智能指针详解   一.简介 由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete.程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见. 用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法.包括:std::auto_ptr.boost::scoped_ptr.boost::shared_ptr.boost::scoped_array.boost::shared