美文网首页
const修饰的变量真的改变不了?

const修饰的变量真的改变不了?

作者: 风扬雨润 | 来源:发表于2018-10-06 18:22 被阅读0次

        const来源于英文单词constant,即不变的意思,可用于修饰变量,希望将变量变成“常量”。例如 int const a=10;如果调用语句a=12;编译时会报错,提示a是常量,不可修改。程序中为什么要用const?主要还是基于这样一种需求:针对一些特定数值,希望在整个程序运行过程中不可改变,否则导致运行结果出现错误。一般而言,有两种解决方式:一是直接在程序中使用这些数值,但不免显得麻烦,因为需要修改时,全部需要修改;二是定义一个个变量存放不希望改变的数值,但这需要程序员在以后调用该变量时都要小心翼翼,不能改变变量的值。然而人都会有犯错的时候,为了确保变量的安全性就会考虑的到使用const机制,这样一旦无意修改变量,编译器则主动报错。

        然而,当程序中使用const去修饰一个变量时,对于它能百分百可靠地保证不改变变量的值时,我们依然应当保持小心谨慎,因为它并不是安全可靠的,只是编译器为它穿上一件马甲而已。换句话说const机制是通过编译器检查实现的,程序在真正运行过程中,并不关心变量是否被const限定了,只要保证编译通过,在程序运行时,仍可任性修改的。例如,int const a=10;int *p=(int *)&a;*p=100;运行之后可以发现,尽管a已被修饰为const,但值变成了100!因为const只是说明a不能被修改,并没有说a的地址不可以被引用,所以只要变量的地址存在被引用的可能,const修饰的变量还是可以被间接修改的!如果希望例子中的a不能修改,可以将p的值修改为int const *p;以表示p所指向的内存的内容不可通过p修改,这也不失为一种解决办法。

相关文章

  • const修饰的变量真的改变不了?

    const来源于英文单词constant,即不变的意思,可用于修饰变量,希望将变量变成“常量”。例如 in...

  • c++ const关键字总结

    const 修饰变量,表示变量的值不会改变: const TYPE ValueName = value; 指针使用...

  • const关键字基本使用

    const const是一个类型修饰符使用const修饰变量则可以让变量的值不能改变常类型是指使用类型修饰符con...

  • const和指针

    关键字const用来定义常量,如果一个变量被const修饰,那么它的值就不能再被改变。 1. 修饰变量 const...

  • C++: const详解

    一、const变量 const修饰一个变量,代表这个变量是个常量,不可改变: 二、const与指针 1. 指向常量...

  • C++中const对象与类成员

    const对象 const关键字能够修饰对象 const修饰的对象为只读对象 只读对象的成员变量不允许被改变 只读...

  • C和C++中的const

    author: 冰小苏打 const 必须初始化 const 作用 1.修饰变量,说明该变量值不可以被改变2.修饰...

  • IOS关键字const/static/extern/synthe

    const const用来修饰右边的基本变量或指针变量被修饰的变量只读,不能被修改 static 修饰变量保证局部...

  • iOS巩基系列(二)——const、static、extern

    const const用来修饰右边的基本变量或指针变量 被修饰的变量只读,不能被修改 static 修饰局部变量在...

  • OC中的extern,static,const

    const的作用: const仅仅用来修饰右边的变量(基本数据变量p,指针变量*p)。 被const修饰的变量是只...

网友评论

      本文标题:const修饰的变量真的改变不了?

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