刚开始接触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. (poj 3177) Redundant Paths

    题目链接 :http://poj.org/problem?id=3177 Description In order to <= F <= ,) grazing fields (which ...

  2. CVTE面试总结

    刚面完了CVTE的一面,感觉完败,现总结. 一:准备不充分 这个跟时间仓促也有关系.昨天下午收到通知,晚上九点多回来填写给定格式的简历,题目也比较多.由于时间较仓促,那些问题的答案没有过多斟酌.但糟糕 ...

  3. Windows Phone开发之”给我好评“

        课余时间搞了一年的Windows phone开发,最近又开始重拾C#编程之道,之前下载许多应用都有"给我好评"的界面,那个时候自己的应用都没有这个界面,于是到处百度谷歌,却 ...

  4. MySQL忘记密码后重置密码(Mac )

    安装好MySQL以后,系统给了个默认的的密码,然后说如果忘记了默认的密码......我复制了默认密码就走过了这一步,这一步就是我漫长旅程的开始.他给的密码太复杂了,当然我得换一个,而且我还要假装我不记 ...

  5. 《编写高质量代码-Web前端开发修改之道》笔记--第二章 团队合作

    本章内容: 揭秘前端开发工程师 欲精一行,必先通十行 增加代码的可读性--注释 提高重用性--公共组件和私有组件的维护 冗余和精简的矛盾--选择集中还是选择分散 磨刀不误砍柴工--前期的构思很重要 制 ...

  6. WCF 宿主与通信模式(二)

    宿主 每个WCF服务都必须托管在Windows进程中,该进程称为宿主进程(host process) 单个宿主进程可以托管多个服务,相同的服务类型也可以托管在多个宿主进程中. wcf中托管服务一般有一 ...

  7. 利用nginx做负载均衡

    round-robin:轮询.以轮询方式将请求分配到不同服务器上,默认 least-connected:最少连接数.将下一个请求分配到连接数最少的那台服务器上 ip-hash :基于客户端的IP地址. ...

  8. dbt

    Procedure Relocate(s : state; b : base_index) { Move base for state s to a new place beginning at b ...

  9. python staticmethod classmethod

    http://www.cnblogs.com/chenzehe/archive/2010/09/01/1814639.html classmethod:类方法staticmethod:静态方法 在py ...

  10. java----线程篇

    一个线程是进程内的一个单一的顺序控制流程图,多线程是指一个进程可以同时运行几个任务,每个任务由一个线程来完成.即多个线程可以同时运行,并且在一个进程内执行不同的任务. 1.创建线程两种方法方法一, 继 ...