码迷,mamicode.com
首页 > 其他好文 > 详细

指针总结以及常量指针与指向常量的指针与指向常量的常指针

时间:2015-10-03 10:40:13      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:

/*指针总结:
1:指针未被初始化一个地址或刚删除一个指针都要将其初始化为0,否则的话将会导致该指针失控
2:假如不想改变一个指针,那么将该指针定义为const,
假如不想改变该指针指向的值,将指针指向的值定义为const
假如即不想改变指针又不想改变指针指向的值,那么将指针和指针指向的值都定义为const

在new堆中创建一个对象,然后将内存地址赋给指针,之后我们就可以通过内存地址访问堆中的对象,
假如要删除该对象,我们只需要使用关键字delete,那么就会删除指针指向的对象并释放存储对象的内存空间,
但是我们要注意一点,指针并没有被删除,并且它仍指向原来的内存空间,因此我们必须对它的值清零或重新赋值*/

/*常量指针:自身不可以改变,但是它指向的目标却是可以改变的
用法:int a, int *const p = a;常量指针必须在定义时初始化*/

/*区分常量指针与指向常量的指针
指向常量的指针:
该指针指向的目标是不可以被修改的,但是该指针是可以被修改的
指向常量的指针只是限制我们修改它的目标,但是它本身是可以被修改的
const A *p2 = new A; //定义指向常量的指针*/


/*指向常量的常指针,它本身不可修改,它指向的目标也是不可修改的
定义方法:
const A*const p1 = new A;这就定义了一个指向常量的常指针*/
#include <iostream>
using namespace std;
class A
{
public:
    int get() const{return i;}
    void set(int x){i = x;}
private:
    int i;
};
int main()
{
    A *p = new A;
    p->set(10);
    cout <<"p:" << p << endl;
    p++;
    cout << "p:" << p << endl;
    A *const p1 = new A; //定义常量指针
    p1->set(11);
    cout <<"p1:" << p1 << endl;
    cout << p1->get() << endl;
    p1->set(11111);
    cout <<"p1:" << p1 << endl;
    cout << "p1:" << p1->get() << endl;
    const A *p2 = new A; //定义指向常量的指针
    p2++;
    const A *const p3 = new A;
    return 0;
}

 

指针总结以及常量指针与指向常量的指针与指向常量的常指针

标签:

原文地址:http://www.cnblogs.com/rain-1/p/4853103.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!