关于C++指针、引用和const关键字的各种关系

const int x1=0;//常量写法1
    int const x2=0;//常量写法2
    int x3=0;
    int * const p1=&x3;//指针常量(指针类型的常量,对象是指针类型的,指针本身是常量,顶层const)
    const int* p2=&x1;//指向常量的指针(指针本身是变量,指向的数据是常量,底层const)
    const int* const p4=&x1;//指向常量的指针常量(顶层+底层const)
    const new_type p5=&x3;//指向变量的指针常量(相当于const (int*) p4=&x3;首先p4是常量,指向一个int变量,顶层const)

    int& r1=x3;
    const int & r2=x1;//常量引用写法1
    int const & r3=x2;//常量引用写法2

    //引用不是对象,初始化后就不能改变,故引用只区别指向常量or不指向常量
    float pi=3.14;
    //int &x=pi;非法,因为这样不同类型的引用绑定实际上是声明一个临时量int tmp=pi;int &x=tmp;
    //绑定一个临时量的引用无意义,因为不能改变原来的pi值,故c++直接报错

原文地址:https://www.cnblogs.com/FdWzy/p/12288134.html

时间: 2024-10-08 19:16:35

关于C++指针、引用和const关键字的各种关系的相关文章

不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象, const 指针和指向 const 对象的指针, const 对象的引用

[源码下载] 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象,  const 指针和指向 const 对象的指针, const 对象的引用 作者:webabcd 介绍不可或缺 Windows Native 之 C++ this 指针 对象数组 对象和指针 const 对象 const 指针和指向 const 对象的指针 const 对象的引用 示例1.CppEmployee 类CppEmployee.h #pragma

const关键字和指针的纠缠

const关键字定义的变量 #include<stdio.h>int  main( void ) {    const int a = 10;     a = 20; }12345671234567 结果怎样? 编译错误 [Error] assignment of read-only variable 'a' 变量a是只读的. 得到一个结论,使用const修饰的变量是常量,我们无法修改.在gcc中把const常量放到了data段,和全局变量一样,只是把它放到了一个区域中让我们无法修改,在运行过

const关键字与数组、指针

目录 const关键字 const修饰数组 const修饰指针 用两个const修饰指针 @ 开始回顾C基础知识.C中使用指针是很危险的事情,一个不慎就会造成程序崩溃,因此对于传入函数的参数进行保护就是必须的了,特别是针对数组. const关键字 const关键字用于将一个变量声明为只读,也就是常量,无法被修改. const int constant = 10;//声明constant为常量的同时对它进行初始化赋值 int const constant = 10;//也可以将const放在int

引用和const的一些

一,引用:某个变量的引用等价于这个变量,是这个变量的一个别名. #include<iostream> int main() { int a=2,b=1; int &c=a;//(1)定义引用时一定要初始化 c=3; std::cout<<a<<std::endl; c=b; //此时并不是c引用了b而是c(实际上是a变量的值)的值变为了b变量的值,并不能改变c的引用 //(2)引用一经初始化就不会再引用其他的变量了. std::cout<<a<

const关键字详解

const在函数前与函数后的区别 一   const基础         如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况:         int   b   =   500;     const   int*   a   =   &b;              [1]     int   const   *a   =   &b;              [2]     int*   const   a   =   &b;              [3

c++中const关键字全面总结

一.const作用 1.const定义常量 注意:const只对它左边的东西起作用,唯一的例外就是const本身就是最左边的修饰符,那么它才会对右边的东西起作用. (1)const修饰变量,以下两种定义形式在本质上是一样的.它的含义是:const修饰的类型为TYPE的变量value是不可变的. TYPE const ValueName = value; const TYPE ValueName = value; (2)将const改为外部连接,作用于扩大至全局,编译时会分配内存,并且可以不进行初

C语言之头文件,static与const关键字

[前言] 最近几个月在做一个C语言代码重构的项目,过程中也让我对之前在书本上学习到的东西有些补充和巩固,在本博中总结记录下,梳理下零碎的知识点和经验也加深印象,书写是为了更好地思考.平时也都是用印象笔记之类的自己写写笔记,今天整理成博客,以便自己以后回顾. [正文] C语言头文件:将其理解为C语言模块化编程向外提供一个接口描述文件.一般包括一些供外部函数或者文件使用的变量声明,函数声明,数据类型定义以及宏定义等.举例: /*************************************

C++中const关键字详解

1.什么是const? const意味着是常量类型,被const修饰的变量或对象是不能被修改和更新的,当然在某些情况下,我们可以偷梁换柱的改变它. 2.为什么要引入const? 最初的目的是为了取代预编译指令:define  MAX  (1024)  ,显然这样的宏定义常量是C语言中继承而来的,C++意识到这种宏替换会存在边际效应,因此希望const能替代它 3.const有什么作用? (1)可以定义const常量,具有不可变性. 例如: const int Max=100; int Array

(转) C/C++中const关键字详解

文章转自  http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777416.html 为什么使用const?采用符号常量写出的代码更容易维护:指针常常是边读边移动,而不是边写边移动:许多函数参数是只读不写的.const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替),分类如下: 常变量:  const 类型说明符 变量名 常引用:  const 类型说明符 &引用名 常对象:  类名 const 对象名 常成员函