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

一、指向const变量的指针

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

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

另一种形式:

int const *p=NULL;

二、const指针

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

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

不过这样也会报错:

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

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

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

C++中的指针与const的更多相关文章

  1. C++中的指针(*)、引用(&)、const详解(一、定义变量)

    一.前言 本人作为一个工作了5年的程序员,程序生涯最初是从c/c++开始的,但是始终不能很熟悉的理解c语言中的指针和c++中的引用,归其原因,一部分自己没有静下心来思考,一部分原因是其自身的复杂性. ...

  2. c++中this指针的用法

    1. this指针的用处: 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果.this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将 ...

  3. ES6中的var let const应如何选择

    javascript世界里面的每个人都在说有关ECMAScript 6 (ES6,也称作ES 2015)的话题,对象的巨大变化 ( 类 , super() , 等), 函数 (默认参数等), 以及模块 ...

  4. 解读 C 语言中的指针

    我想对很多学习C语言的新手来说,指针无疑是一个难点.但是,我觉得指针也是C语言特别重要的一个特性.也许,你在除了C和C++以外的编程语言中,很少看到指针.而C++中,也多用引用,而非指针.指针,作为一 ...

  5. C++中 容易忽视的const 修饰符

    C++可以用const定义常量,也可以用#define定义常量,但是前者比后者有更多的有点: (1)const常量有数据类型,而宏常量没有数据类型.编译器可以对const进行类型安全检查,而后者只进行 ...

  6. C++中this指针的用法详解

    转自 http://blog.chinaunix.net/uid-21411227-id-1826942.html 1. this指针的用处: 一个对象的this指针并不是对象本身的一部分,不会影响s ...

  7. C++中this指针的用法详解(转)

    原文地址:http://blog.chinaunix.net/uid-21411227-id-1826942.html 1. this指针的用处: 一个对象的this指针并不是对象本身的一部分,不会影 ...

  8. C++ Prime:指针和const

    与引用一样,也可以令指针指向常量或非常量,类似于常量引用,指向常量的指针不能用于改变其所指对象的值.要想存放常量对象的地址,只能使用指向常量的指针: const double pi = 3.14; / ...

  9. C++中this指针的使用方法.

    this指针仅仅能在一个类的成员函数中调用,它表示当前对象的地址.以下是一个样例: void Date::setMonth( int mn ) { month = mn; // 这三句是等价的 thi ...

随机推荐

  1. Apache 使用密码文件验证用户

    使用文本文件作为密码文件 创建密码文件 需要使用htpasswd.exe文件来创建用户密码文件 语法: htpasswd -c '文件完整路径' 用户名 向一个用户密码文件中添加一个新用户 语法: h ...

  2. JSON的使用

    最近在项目中大量的使用了JSON, 发现JSON和XML的功能相近,都是一种数据传输格式.只是与XML相比JSON显得更加轻量级,使用也更加容易. JSON依赖的第三方jar包: commons-be ...

  3. 关于Socket编写简单聊天工具的总结(原创)

    这段时间再看socket编程,虽然现在是刚刚接触,但是还是忍不住想写一篇总结,来激励自己努力学习,写的不好的地方,还请大家指教啊! 下面针对一个简单的发送消息和文件的程序说说吧.   首先是服务器需要 ...

  4. 破解网络投票IP限制、验证码限制、COokie限制、Seesion限制的方法!(转)

    顾名思义,网络投票就是在网络上进行的投票活动,但和其他类型的投票不同的是:网络投票是建立在网络投票系统上的,而结果完全由程序输出,无需人工参与.这既是网络投票系统的优点也是其缺点,没有了人工的参与,其 ...

  5. 解决Execwb 导致 ado崩溃的问题。

    http://qc.embarcadero.com/wc/qcmain.aspx?d=61255

  6. CCNP第三天 EIGRP综合实验

    实验题如图所示:其中R2连R3 R5为快速以太网线,其他均为串线,帧中继默认是富曼斯(全连网状结构),即所有接入的路由之间的PVC都已经打通,所有  要关闭R5和R8的逆向arp功能,来手工配置R5到 ...

  7. SendMessage 窗口函数

    函数功能:该函数将指定的消息发送到一个或多个窗口.此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回.而函数PostMessage不同,将一个消息寄送到一个线程的消息队列后立即返回. MSD ...

  8. 在centos 6.4下安装opencv 2.3.1

    系统环境介绍: centos 6.4 1.安装依赖包 yum install cmake gcc gcc-c++ gtk+-devel gimp-devel gimp-devel-tools gimp ...

  9. [python] 字符串引用

    %s str %d 整数 %f 浮点数 print('$%.03f' % 30.1777) >>>$30.178  #四舍五入 print( '%-5s %s %10s' % ('J ...

  10. 九度OJ做题记录 更新.....

    2015年1月7日 20:34:23  题目1007:奥运排序问题 有点意思,以后想另外方法快速做出来 2015年1月7日 21:03:56 有一个技巧就是,写了三个比较函数cmp1,cmp2,cmp ...