const 订阅
const是一个C语言(ANSI C)的关键字,具有着举足轻重的地位。它限定一个变量不允许被改变,产生静态作用。使用const在一定程度上可以提高程序的安全性和可靠性。另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一定帮助。另外CONST在其它编程语言中也有出现,例如Pascal、C++、PHP5、B#.net、HC08 C、C#等。 展开全文
const是一个C语言(ANSI C)的关键字,具有着举足轻重的地位。它限定一个变量不允许被改变,产生静态作用。使用const在一定程度上可以提高程序的安全性和可靠性。另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一定帮助。另外CONST在其它编程语言中也有出现,例如Pascal、C++、PHP5、B#.net、HC08 C、C#等。
信息
外文名
const
运用领域
C++、PHP5
作    用
提高程序的安全性和可靠性
所属领域
计算机
释    义
限定一个变量不允许被改变,产生静态作用
中文名
C语言的关键字
CONST定义
const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的。
收起全文
精华内容
下载资源
问答
  • const

    千次阅读 多人点赞 2020-01-08 21:12:52
    一、const的意义 二、常量和宏定义的区别 三、const修饰类成员变量 四、const修饰引用 一、const的意义 const的意义是“只读”。它修饰的变量不允许被修改。cconst只是一个修饰符,常见的几种const用法: 1)...

    目录

    一、const的意义

    二、常量和宏定义的区别

    三、const修饰类成员变量

    四、const修饰引用


    一、const的意义

    const的意义是“只读”。它修饰的变量不允许被修改。cconst只是一个修饰符,常见的几种const用法:

    1)const int ciDat:变量的值不允许被修改;

    2) int const icData:同上;

    3) const int * cipData:指针的值不允许被修改;

    4) int *const  ipcData:指针的地址不允许被修改;

    5) int const * icpData:指针的值不允许被修改;

    6)int & const iData = icData; //地址不能被修改;

    总结:const在谁后面谁就不可修改,const在首位就向后移动一位。

    二、常量和宏定义的区别

    1)处理方式不同,宏在预处理阶段,常量在编译运行阶段使用;

    2)常量有类型,宏没有类型修饰,所以常量比宏一个类型检查;

    3)宏在预处理阶段进行的是代码替换,而常量是将值共别人使用,不会开辟空间复制值以共使用;两者相比,宏需要的内存较多;

    总结:const比#define好用!

    三、const修饰类成员变量

    1)const修饰类成员变量要在类构造中进行初始化;

    2)const修饰的类成员变量的生命周期是类对象的生命周期,对象被创建时才有这个常量。不是所有类实例的对象使用一个常量;若想所有类对象使用同一个常量使用枚举:enum EM{ dataOne = 100, dataTwo = 200};但是枚举值得大小有限,EM的大小是4字节。

    四、const修饰引用

    引用是另一个变量的别名,它本身就是一个常量。不能再让引用成为另一个变量的别名,因此只剩下地址是可变的。int & const iData = icData; 引用的地址不能被修改;

    展开全文
  • // const foo = Object.freeze({}) // foo.name = '大白菜' // console.log(foo); 'use strict' const foo = Object.freeze({}) foo.name = '大白菜'
  • const char * 、char const *、 char * const 三者的区别

    万次阅读 多人点赞 2018-06-23 12:46:23
    const char *ptr; char const *ptr; char * const ptr; 现整理三者之间的区别与联系。 一、const char *ptr; 定义一个指向字符常量的指针,这里,ptr是一个指向 char* 类型的常量,所以不能用ptr来修改所指向...

    C/C++ 中关于以下三种定义:

    const char *ptr;

    char const *ptr;

    char * const ptr;

    现整理三者之间的区别与联系。

     

    一、const char *ptr;


    定义一个指向字符常量的指针,这里,ptr是一个指向 char* 类型的常量,所以不能用ptr来修改所指向的内容,换句话说,*ptr的值为const,不能修改。但是ptr的声明并不意味着它指向的值实际上就是一个常量,而只是意味着对ptr而言,这个值是常量。实验如下:ptr指向str,而str不是const,可以直接通过str变量来修改str的值,但是确不能通过ptr指针来修改。

    gcc编译报错信息:

    注释掉16行ptr[0] = 's';运行正常,运行结果为:

    hello world
    gello world

    另外还可以通过重新赋值给该指针来修改指针指向的值,如上代码中取消7、18行的注释,运行结果为:

    hello world
    good game!!

     

    二、char const *ptr;


    此种写法和const char *等价,大家可以自行实验验证。

     

    三、char * const ptr;


    定义一个指向字符的指针常数,即const指针,实验得知,不能修改ptr指针,但是可以修改该指针指向的内容。实验如下:

    gcc报错信息:

    注释掉17行代码运行正常,运行结果为:

    hello world

    sello world

    以上转自:https://blog.csdn.net/SilentOB/article/details/76994618


     

     

    个人总结:


    const char *ptr==char const *ptr;  可以直接改变指针指向,但不能直接改变指针指向的值;*ptr=*ss;

    char *const ptr; 可以直接改变指针指向的值,但不能直接改变指针指向;ptr[0]='s';

    但两者都可以通过改变所指向的指针的内容,来改变它的值。

    int main()
    {
        char str[] = "hello world";
        char sec[] = "code world";
    
    
        const char *ptr1 = str;
        cout << ptr1 << endl;
        strcpy(str,"hi world");
        cout << ptr1 << endl;
        ptr1 = sec;//直接改变指针指向
        cout << ptr1 << endl;
        sec[0] = 'o';
        cout << ptr1 << endl;
        ptr1[0] = 'a';//直接改变指针指向的值,报错
    
    
        char ss[] = "good game";
        char *const ptr2 = ss;
        cout << ptr2 << endl;
        ptr2[0] ='a';//直接改变指针指向的值
        cout << ptr2 << endl;
        strcpy(ptr2, "last");
        cout << ptr2 << endl;
        ss[0] = 'z';
        cout << ptr2 << endl;
        ptr2 = sec;//直接改变指针指向,报错
        system("pause");
    }

     

    展开全文
  • js中const,var,let区别与用法

    万次阅读 多人点赞 2018-07-09 10:48:04
    今天第一次遇到const定义的变量,查阅了相关资料整理了这篇文章。主要内容是:js中三种定义变量的方式const, var, let的区别。1.const定义的变量不可以修改,而且必须初始化。1 const b = 2;//正确 2 // const b;/...

    今天第一次遇到const定义的变量,查阅了相关资料整理了这篇文章。主要内容是:js中三种定义变量的方式const, var, let的区别。

    1.const定义的变量不可以修改,而且必须初始化。

    1 const b = 2;//正确
    2 // const b;//错误,必须初始化 
    3 console.log('函数外const定义b:' + b);//有输出值
    4 // b = 5;
    5 // console.log('函数外修改const定义b:' + b);//无法输出 

    2.var定义的变量可以修改,如果不初始化会输出undefined,不会报错。

    复制代码
    1 var a = 1;
    2 // var a;//不会报错
    3 console.log('函数外var定义a:' + a);//可以输出a=1
    4 function change(){
    5 a = 4;
    6 console.log('函数内var定义a:' + a);//可以输出a=4
    7 } 
    8 change();
    9 console.log('函数调用后var定义a为函数内部修改值:' + a);//可以输出a=4
    复制代码

    3.let是块级作用域,函数内部使用let定义后,对函数外部无影响。

    复制代码
    1 let c = 3;
    2 console.log('函数外let定义c:' + c);//输出c=3
    3 function change(){
    4 let c = 6;
    5 console.log('函数内let定义c:' + c);//输出c=6
    6 } 
    7 change();
    8 console.log('函数调用后let定义c不受函数内部定义影响:' + c);//输出c=3
    复制代码
    展开全文
  • 语法解析错误: syntax error, unexpected 'const' (T_CONST), expecting variable (T_VARIABLE) 代码 class Psr16Cache implements CacheInterface, PruneableInterface, ResettableInterface { use ProxyTr.....

    错误代码

    语法解析错误: syntax error, unexpected 'const' (T_CONST), expecting variable (T_VARIABLE)

     

    代码

    class Psr16Cache implements CacheInterface, PruneableInterface, ResettableInterface
    {
        use ProxyTrait;
    
        private const METADATA_EXPIRY_OFFSET = 1527506807;
    
        private $createCacheItem;
        private $cacheItemPrototype;
    
        public function __construct(CacheItemPoolInterface $pool)
        {

    错误原因  PHP版本太低,常量修饰符7.1才支持

    PHP 7.1 之前的类常量是不允许添加可见性修饰符的,此时类常量可见性相当于 public。PHP 7.1 为类常量添加了可见性修饰符支持特性。总的来说,可见性修饰符使用范围如下所示:

    函数/方法:public、private、protected、abstract、final

    • 类:abstract、final
    • 属性/变量:public、private、protected
    • 类常量:public、private、protected


     

    展开全文
  • const应用和作用

    千次阅读 2020-08-24 01:25:18
    const工作中经常遇到,面试也经常遇到,这里整理一下。 1.欲阻止一个变量被改变,可以使用const关键字。在定义该const变量时,通常需要对它进行初始化,因为以后没有机会再去改变它了。 2.对指针来说,可以指定...
  • c++中const的作用

    万次阅读 多人点赞 2019-04-04 17:30:13
    const关键字的作用 (1)作用: 1)欲阻止一个变量被改变,可使用const,在定义该const变量时,需先初始化,以后就没有机会改变他了; 2)对指针而言,可以指定指针本身为const,也可以指定指针所指的数据为const...
  • getCurrentInstance代表上下文,即当前实例。ctx相当于Vue2的this, 但是需要特别注意的是ctx代替this只适用于开发阶段,如果将项目打包放到生产服务器上运行,就会出错,ctx无法获取路由和全局挂载对象的。...
  • 重新学习顶层const和底层const

    千次阅读 多人点赞 2021-01-26 00:03:02
    顶层const可以表示任意的对象是常量,这一点对任何数据类型都适用,如算术类型,类,指针等底层const则与指针和引用等复合类型的基本类型部分有关。 比较特殊的是,指针类型既可以是顶层const也可以是底层const。 ...
  • const用法详解

    万次阅读 多人点赞 2018-06-19 15:43:41
    首先我们来了解一下现在所学的C标准,分别是C89、C99和C++99,C89标准的C语言中的const和C++中的const是有区别的,而在C99标准的C语言中是相同的。我们目前所学的C语言标准为C89标准。 const修饰的量为一个常量即...
  • 一文读懂ES6 中 var、let、const 的区别

    万次阅读 2020-05-15 22:23:32
    ES6 中 var、let、const 的区别一、提出的时间早晚二、是否可以变量提升三、是否允许重复定义变量四、const一旦声明变量,则此变量就不能修改五、全局作用域和函数作用域 一、提出的时间早晚 var提出的时间较早,是...
  • 关于const int * ,int const * 以及 int * const 的区别

    万次阅读 多人点赞 2018-06-13 14:43:50
    指针和const const指针(常量指针): int * const : int * const : 指针是一个对象,而引用不是,引用是所指对象的别名。 1. 所以指针的用法可以像其他对象类型一样,允许把指针本身定义为...
  • let和const

    万次阅读 多人点赞 2019-06-02 22:03:41
    Let和const 和var的作用是一致的,声明变量! 由此引出一个概念: let 用let声明的变量只对自己的块级作用域有效: 块级作用域:{ }包起来的就是一个块级作用域! ES6是强制使用严格模式的!不用使用的"use ...
  • 假如某个函数返回类型 const T,形如: const T SomeFunction(); 你很可能希望有一个可变的变量接收这个值: auto t = SomeFunction(); t.Modify(); 反过来,你也有时会希望把一个可变的值变成const引用 vector<T...
  • const* 和 *const

    万次阅读 多人点赞 2019-02-20 18:35:46
    const*和*const的区别也是老生常谈了,其实也很简单。 比如int const*a;,实际上可以看成是int const (*a),这表示指针a所指向的地址可以变,但是所指向的那个值不能变。 而int *const a;,可以看成int* (const a);...
  • 2、在前面加上const const char* image_window = "Source Image"; const char* result_window = "Result window"; 3、右键project -> 属性 -> C/C++ -> 语言 -> 符合模式:否 4、对变量进行强转 char* image_window...
  • mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。 在C++中,mutable也是为了突破const成员函数的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中...
  • VS2019项目出现"const char *" 类型的实参与 “char *” 类型的形参不兼容错误的解决方法 解决方案一 在VS2019中依次点击项目->属性->C/C+±>语言->符合模式,将原来的“是”改为“否”即可。 解决方案...
  • c++ const 转 非const

    千次阅读 2019-08-20 19:57:54
    #include "mainwindow.h" #include <QApplication> #include <QtDebug> void fun(const int * temp) ... int *p = const_cast<...//const 转 非const *p = 22; } int main(in...
  • const char *p,char const *p和char *const p区别(面试题常见)

    万次阅读 多人点赞 2018-07-27 18:23:01
    请看下面三种定义: const char *p; char const *p; char * const p; ...请问三者有什么区别?...先看第一种,先看p,根据优先级它和*结合... 第二种:由于没有const *的运算,若出现const *的形式,则const实际上是修...
  • 【C++100问】深入理解理解顶层const和底层const

    千次阅读 多人点赞 2019-11-11 16:09:34
    小结一下: 主要的理解问题基本可以得到解决,认识哪一个是什么即可,这一点上 stackoverflow 显然更清晰,除此之外,最大的问题应该是中文对于底层 const 的翻译,英文原文的两个单词是: top-level const 顶层 ...
  • const int p 与 int const p 和const int const *p区别 一、何为const const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的。也就是说const常量,具有不可变性。 例如: const int Max=100; ...
  • 错误: E0513 不能将 "LPCSTR" 类型的值分配到 "LPCWSTR" 类型的实体 E0167 "LPCSTR" 类型的实参与 "LPCWSTR" 类型的形参不兼容 E0167 "char *" 类型的实参与 "LPCWSTR" 类型的... E0167 "const char *" 类...
  • 当一个函数的形参为非const类型,而一个参数以非const传入,编译器一般会认为程序员会在该函数里修改该参数,而且该参数返回后还会发挥作用。此时如果你把一个临时变量当成非const引用传进来,由于临时变量的特殊性...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 491,492
精华内容 196,596
关键字:

const