码迷,mamicode.com
首页 > 编程语言 > 详细

C++中的指针与const

时间:2014-11-05 22:43:29      阅读:292      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   ar   os   for   sp   

刚开始接触C++时,指针和const之间的关系有点混乱,现在总结如下:

一、指向const变量的指针

#include<iostream.h>
void main()
{
    const int *p=NULL;
    const int a=10;
    p=&a;
    cout<<"*p="<<*p<<endl;
    int b=100;
    p=&b;
    cout<<"*p="<<*p<<endl;
    //*p=200;    错误,不能通过修改指针来修改指针指向的内容
    b=200;
    cout<<"*p="<<*p<<endl;
}

不能通过修改指针来修改指针指向的内容,但可以修改指针的指向。

另一种形式:

int const *p=NULL;

二、const指针

#include<iostream.h>
void main()
{
    int a=10;
    int b=100;
    int * const p=&a;
    cout<<"*p="<<*p<<endl;
    //p=&b;        错误,不能通过修改const指针的指向来修改指针指向的内容 
    *p=200;
    cout<<"*p="<<*p<<endl;
}

不能修改指针的指向,但可以通过修改指针来修改指针指向的内容。

不过这样也会报错:

#include<iostream.h>
void main()
{
    const int a=10;
    int b=100;
    int * const p=&a;
    cout<<"*p="<<*p<<endl;
    //p=&b;        错误,不能通过修改const指针的指向来修改指针指向的内容 
    *p=200;
    cout<<"*p="<<*p<<endl;
}

报错如下:

--------------------Configuration: 01 - Win32 Debug--------------------
Compiling...
01.cpp
E:\Program Files (x86)\20141102\01.cpp(6) : error C2440: ‘initializing‘ : cannot convert from ‘const int *‘ to ‘int *const ‘
        Conversion loses qualifiers
Error executing cl.exe.

01.exe - 1 error(s), 0 warning(s)

而指向const变量的指针中不会有这样的问题。

三、指向const变量的const指针

#include<iostream.h>
void main()
{
    int a=10;
    int b=100;
    const int * const p=&a;
    cout<<"*p="<<*p<<endl;
    //p=&b;    错误,不能通过修改const指针的指向来修改指针指向的内容
    //*p=200;    错误,不能通过修改指针来修改指针指向的内容
}

不能通过修改指针来修改指针指向的内容,也不可以修改指针的指向。

估计以后我都没有耐心看,也许那时这都不是事。

版权声明:

        访问者可将本主页http://www.cnblogs.com/wangshunli)提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,

       但同时应遵守著作权法及其他相关法律的规定,不得侵犯本主页及相关权利人的合法权利。

       转载前务必通知本主页并以超链接形式注明内容来自本主页,以免带来不必要的麻烦。

电子邮箱:zijinqingqing@outlook.com

C++中的指针与const

标签:style   blog   http   io   color   ar   os   for   sp   

原文地址:http://www.cnblogs.com/wangshunli/p/4077384.html

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