美文网首页
const 学习记录

const 学习记录

作者: rainzhang | 来源:发表于2017-11-03 11:10 被阅读20次

0x01 概述

http://blog.csdn.net/wanghuiqi2008/article/details/25887029

学习上面链接的内容,将的比较好,做记录如下:

const 是用来标识静态变量,不能修改的变量。因为const 有时候修饰普通变量有时候修饰指针,所以不好理解。

0x02 修饰普通常量的使用

const int a =1;//变量a为不可以修改变量,其中 const int a 和 int const a 一样。

a =100;//会报错: Cannot assign to variable 'a' with const-qualified type 'const int'

0x03 修饰指针变量

const 放到 * 左边,是修饰指针指向的对象为常量,不能通过指针修改指向对象的值,但是可以修改指针的指向。const 放到 * 右边,就是修饰指针自身为常量,指针本身的指向也不可以修改,但是指向的内容可以修改。

const 修饰指针指向点点对象 const 修饰指真自身

0x04 修饰函数

(1)参数为指针

void function (const int a);               //情况1

void function (const int * a);            //情况2

void function (int const * a);            //情况3

void function (int * const a);            //情况4

情况1:传递过来的参数a在函数中不能被修改(无意义,因为本身就是形参,改不改都不会影响实参)

情况2与情况3相同:a指针所指的内容*a 不能修改

情况4:指针a为常量,其地址不能改动,但是*a可以修改(无意义,改不改a指针指向的地址都不影响实参)

(2)参数为引用

void function (const class & a);   //情况1

void function (const int & a);       //情况2

情况1:在函数内不能改变类对象a,a的成员变量的值也不能被修改

情况2:function()函数不能修改a,对a是只读的

这样的一个const引用传递和最普通的函数按值传递的效果是一模一样的,他禁止对引用的对象的一切修改,唯一不同的是按值传递会先建立一个类对象的副本,然后传递过去,而它直接传递地址,所以这种传递比按值传递更有效。另外只有引用的const传递可以传递一个临时对象,因为临时对象都是const属性,且是不可见的,他短时间存在一个局部域中,所以不能使用指针,只有引用的const传递能够捕捉到这个家伙。

0x05 const常量与define宏定义的区别

Point a;

(1)编译器处理方式不同

define宏是在预处理阶段展开

const常量是在编译运行阶段使用

(2)类型和安全检查不同

define宏没有类型,不做任何类型检查,仅仅是展开

const常量有具体的类型,在编译阶段会执行类型检查

(3)存储方式不同

define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存

const常量会在内存中分配(可以是堆中,也可以是栈中)

0x06 总结

通过这次学习,对const 有了一定的了解,希望在以后的使用中对其了解更深入。

感谢:http://blog.csdn.net/wanghuiqi2008/article/details/25887029

相关文章

  • const 学习记录

    0x01 概述 http://blog.csdn.net/wanghuiqi2008/article/detail...

  • 字符串转JSON

    // 客户咨询记录const records = `[${searchRecord}]`;const initia...

  • node.js连接mysql数据库操作

    记录一下代码: const mysql = require('mysql');const sql_config =...

  • c++学习心得

    仅用于记录平时学习的心得,经常更新 迭代器 iterator优先于const_iterator,reverse_i...

  • ES6新特性简单学习记录

    学习文章转自:ES6简单特性学习记录 变量定义新方式:let/const let特性 : 块级作用域(一对{}包括...

  • iOS中static、const、extern

    开发中阅读他人代码,经常看到const、static和extern关键字,记录下 1、const 用来定义常量,宏...

  • ES6 const命令

    本节我们学习 ES6 中的 const 命令,const 也是 ES6 中新增的一个命令。const 声明一个只读...

  • ES6 const命令声明变量

    本节我们学习 ES6 中的 const 命令,const 也是 ES6 中新增的一个命令。const 声明一个只读...

  • 2021-07-16

    JavaScript 学习总结 const 的使用规则 const 可以用来修饰 内存地址 不可更换 但是 可...

  • ES6的变量声明

    自我学习记录,欢迎指正在ES6中,变量的声明可以用var,let,const var 1、用var声明的变量如果在...

网友评论

      本文标题:const 学习记录

      本文链接:https://www.haomeiwen.com/subject/tdozpxtx.html