C++ 之 const 随笔记】的更多相关文章

Const 的使用读书笔记 Const的主要主要用法有: 常变量: const 类型说明符 变量名 常引用: const 类型说明符 &引用名  常对象: 类名 const 对象名 常成员函数: 类名::fun(形参) const 常数组: 类型说明符 const 数组名[大小] 常指针: const 类型说明符* 指针名 ,类型说明符* const 指针名 常变量 例如:const int a;  或  int const a; 在c语言中声明时必须进行初始化,C++中则没有这个限制.C 标准…
const关键字,相信对C语言有所了解的同学都应该知道他的作用:1.修饰常量,2.修饰指针,3.修饰函数 1.修饰常量 const修饰后的变量被定义为常量 2.修饰指针 当用const修饰指针的时候,你可以用const关键字 标明 指针所指内容或者真正本身是常量! 这里有点绕,就用经典的例子举例吧! char greeting[] = "hello"; char*p = greeting; const char* p = greeting;  //表示指向是常量 char* const…
#include<stdlib.h> #include<iostream> using namespace std; int main(){ // const 仅仅起到是否为常数的修饰 // 普通变量 ; const int b=a; // b定了,不能再赋值 a=; cout << b <<endl; // 指针时 int *p=&a; const int *p1=p; // *p1定了,不能再给*p1赋值,但是p1可变,如p1=&c,a也…
openssl 1.1.1 include/openssl aes.h: # define HEADER_AES_H aes.h: # define AES_ENCRYPT 1 aes.h: # define AES_DECRYPT 0 aes.h: # define AES_MAXNR 14 aes.h: # define AES_BLOCK_SIZE 16 aes.h: struct aes_key_st { aes.h: unsigned long rd_key[4 * (AES_MAXN…
C#中表示不变的量(常量)的两种形式:const 和readonly const 是静态常量 readonly 是动态常量 严格的来讲:const 应该称为常量 而readonly 则应称为只读变量.为什么这么说呢,继续往下看. 使用上的不一样 const 常量在声明时必须初始化 readonly.static readonly 在声明时可以不初始化 readonly 声明的常量通过以下两种方式进行初始化 声明时初始化,构造函数初始化(非静态构造函数) static readonly 声明的常量…
<OOC>笔记(1)——C语言const.static和extern的用法 C语言中const关键字用法不少,我只喜欢两种用法.一是用于修饰函数形参,二是用于修饰全局变量和局部变量. 用const修饰的函数形参 直接修饰 一个形如 int Minus(const int a, const int b, int testCase); 的函数,const的意义是什么呢? 答:参数a被const修饰,说明在Minus函数内,编译器不允许a被别的变量(例如x)赋值(修改).参数b同理. 如果你写了a…
今天学习了es6中的let和const命令,借此整理一下笔记. let : let 和 var 的声明方式一样,但有 var 比不上的优点.下面用 var 和 let 的例子来加深对 let 的理解. 1 let 只作用与当前作用域中  在声明var时,在无特别情况下,代码块里的var外部也可以访问到的,但是let声明之后,外部是访问不到的,会报错. { var a = 123 let b = 456 } console.log(a) console.log(b) // ReferenceErr…
原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 程序一: 我们知道数组的下标不能为变量,必须是一个确定的值.在C语言中看程序: #define a 10 int main() { //第一部分 int c=20; int d=10; int arr[c+d]; //第二部分 //int const a=20; //int const b=10; //int arr[a+b]; return 0; } 理所当然的编译错误,因为数组下标不能是变量. 在C++中看相同的程序.在C++中这…
学习参考地址1  学习参考地址2 ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准.因为当前版本的ES6是在2015年发布的,所以又称ECMAScript 2015:也就是说,ES6就是ES2015. let, const, class, extends, super, arrow functions, template string, destructuring, default, rest arguments 这些是ES6最常用的几个语法,基本上学会它们,我们…
  原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 第一,const与#define的相同点 C++中的const常量类似于宏定义 const  int  c = 5  ≍  #define  c  5 const是用来替换#define的一个手段. 程序一: int main() { const int a=10; printf("a=%d\n",a); return 0; } 程序二: #define a 10 int main() { //const int a=1…
原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 笔记十六关于const关键字,在C语言和C++中const的表现是不同的. 先看一下const基础知识. 对const的初级理解:const是定义常量,const意味着只读. 掌握const最基本的关键点是:指针变量和它所指向的内存空间变量是两个不同的概念,看const是修饰指针本身,还是修饰了指针所指向的内存空间. 举个例子: 定义一个结构体Teacher,在operatorTeacher01函数中,函数形参 const Teach…
JavaScript:学习笔记(7)——VAR.LET.CONST三种变量声明的区别 ES2015(ES6)带来了许多闪亮的新功能,自2017年以来,许多JavaScript开发人员已经熟悉并开始使用这些功能.虽然这种假设可能是正确的,但仍有可能其中一些功能对某些人来说仍然是一个谜. ES6带来的一个新特性是新增了通过使用let.const来声明变量.在本文中,我们将讨论var,let和const的范围,使用和提升.在您阅读时,请注意它们之间的差异,我会指出. VAR VAR的范围 范围本质是意…
笔记摘自:<你不知道的JavaScript(上)>第3章 函数作用域和块作用域 let 1.let 关键字可以将变量绑定到所在的任意作用域中 2.let 为其声明的变量隐式地劫持了所在的块作用域 3. 通常来讲,显示的代码优于隐式或一些精巧但不清晰的代码. 4.只要声明是有效的,在声明中的任意位置都可以使用{..}括号来为let创建一个用于绑定的块. 5.使用let进行的声明不会在块作用域中进行提升.声明的代码被运行之前,声明并不存在. 例如: { console.log(bar); // R…
今天开个JS自学笔记,本身JS的语法很简单,如果学过Java或者C系的都很容易,就不讨论了.主要是讨论实际应用的问题. 1.表单验证: a.html自动验证: HTML 表单验证可以通过浏览器来自动完成.如果表单字段 (fname) 的值为空, required 属性会阻止表单提交: <form action="demo_form.php" method="post"> <input type="text" name="…
新声明方式:const 1.不属于顶层对象 window 2.不允许重复声明 3.不存在变量提升 4.暂时性死区 5.块级作用域   以上特性跟let声明一样,特性可看 let 的学习笔记:链接跳转   ES5里面定义常量: Object.defineProperty(window, "PI", { value: 3.14, writable: false, }); console.log(PI); PI = 5; console.log(PI); const定义常量: const a…
let和const命令: Es6新增了let命令,声明变量,但与var不一样的,只在let命令所在的代码块内有效(如for循环之外let声明的变量就不再有效).并且let不像var那样会发生"变量提升"现象,所以,变量一定要在声明后使用,否则报错. 暂时性死区; 只要块级作用域内存在let命令,它所声明的变量就"绑定"binding这个区域,不再受外部的影响. 注意: es6明确规定:如果区块中存在let和const命令,这个区块会对这些命令声明的变量,从一开始就形…
let 不存在变量提升 通过let声明的变量仅在块级作用域内有效 不允许在同一个作用域内重复声明一个变量 防止值公用 var oUl = document.querySelectorAll('ul>li'); for(let i=0,len=oUl.length;i<len;i+=1){ oUl[i].onclick = function(){ console.log(`text:${this.innerText} index:${i}`); }; } 不用再使用自执行函数了,兴奋. type…
let语句的基本用法:  1.let声明的变量为块级作用域,只在最近的{}里面有效,如果在外部引用就会报错. { let a = 10; var b = "hello" } alert( a ) //报错 alert( b ) // "hello" 正是由于该特性,所以let语句十分适合用于循环语句中,用于定义局部变量. 2.不会进行变量定义提前处理.在js语句中,通过var定义的变量存在变量声明提前的情况.就是在变量声明之前可以进行使用,但是这时该提前使用的变量值…
1.#define缺点1 #define NUM 1.2 记号NUM可能没有进入记号表,在调试或者错误信息中,无法知道1.2的含义. 改善:通过const int NUM = 1.2; 2.#deine缺点2 无法利用#define创建一个class专属常量,一旦宏被定义,它就在其后的编译过程中有效(除非遇到#undef). 改善:可以通过const成员变量来满足要求. 3.const成员变量缺点 占用存储空间 改善:通过enum代替 4.对于形似函数的宏,最好改用inline函数替换#defi…
宏, const变量, 内联, 枚举 宏 宏定义: 宏即宏替换,在C语言源程序中允许用一个标识符来表示一个字符串,称为宏,关键字 define,在所有使用到宏的地方都只是直接的替换而不做任何类型检查 宏替换是C提供的三种预处理功能的其中一种,这三种预处理包括:宏定义,文件包含,条件编译,C++继承C的遗产,在C++中也可以使用宏,宏不能访问对象的私有成员, 宏的定义很容易产生二义性 特点:在预处理阶段对宏定义的替换,使用时要特别小心:宏本身不占用内存单元,但每次调用都分配内存:语句的最后不加分号…
03.尽量使用const 1.const概述 2.返回const 为何要返回一个const? 因为如果不返回const,程序员可能写出fun(a,b)=c;这样的代码,也许是因为打字错误可能写出类似if(a*b=c){...}而本来是要写if(a*b==c){...}的, 程序员对*进行重载却不返回const类型对象,这将使调试变得麻烦,如果返回const,编译器就会给出错误 3.const成员函数 注意一点,类中的成员函数,如果只是常量性不同,是可以被重载的 []操作符的返回值是个引用,如果返…
02.尽量以const,enum,inline代替#define 原因:编译前的预处理会替换宏,所以调试的时候找不到错误 1.const 尽量用const替代常量宏定义 两种特殊情况: (1).常量指针 通常定义为const char * const cstr="hello world"; 即要把指针本身定义为const,而不仅仅是指针指向的值,通常用string替代char*-based: const string str("hello world"); (2).…
ilocker:关注 Android 安全(新手) QQ: 2597294287 #define ASPECT_RATIO 1.653 记号 ASPECT_RATIO 不会进入 symbol table,因为它在预处理阶段就被替换了. 如果运用此常量时获得了一个编译错误,并且该宏定义又非自己所写,就会对 1.653 为何意.来自何处而感到困惑.于是,我们会因为追踪代码而浪费时间. 应以常量取而代之: const double kAspectRatio = 1.653; 这样没准还会减小 obje…
原则二.为你的常量选择readonly而不是const      Prefer readonly to const 对于常量,C#里面有两个不同的版本:运行时常量(readonly)和编译时常量(const) 编译时常量更快更直接,但在可维护性上不及运行时常量.保留编译时常量是为了满足那些对性能要求克刻,且随着程序运行时间的过去, 其值永远不发生改变的常量使用的(译注:这说明编译时常量是可以不被C#采用的,但考虑到性能问题,还是做了保留). //Compile time constant: pu…
尽量使用const替换 #define定义常量的原因: #define 不被视为语言的一部分 宏定义的常量,预处理器只是盲目的将宏名称替换为其的常量值,导致目标码中出现多分对应的常量,而const定义的常量,会进入记号表,使用到该常量的地方使用的同一份,使目标码的量更小点: const可以在类中定义一个class专属常量,其作用域限制于class内.(注:如果一个class专属常量又是static又是整数类型,需要特殊处理.主要不取其地址,则,可以声明并使用但是无须提供定义式.如果,需要取地址,…
const简单介绍: 1不再使用c中的#define,c++默认不给const定义的变量分配内存,所以它默认的是仅本文件可以看到该变量(即internal linkage), const int bufisze; 如果工程中的文件看见,就要明显的写出关键字extern,即,此时编译器会给它分配内存. extern const int bufisze = 100; 另外: extern const int bufsize;//只是声明不是定义 ;//必须加上如此定义 // int bufsize=…
ES6 中新增了两个命令: let 和const. let命令: let 用于声明变量,和var 类似,但是所声明的变量只在代码块中有效,不存在变量提升,有暂时性死区. 1.只在代码块中有效 和var 命令不同的是,let 声明的变量只在代码块中有效,例如 { let a = 1; var b = 2; } console.log(b); // print 2; console.log(a); // this will cause error. 2. 不存在变量提升 所谓变量提升,就是在同一作用…
es6已经推出一段时间了,虽然在兼容和应用上还有不少的难题,但是其提供的未来前端代码编程的发展趋势和一些好用的功能还是很吸引人的,因此个人买了'阮一峰'先生的es6入门,希望对其有一个了解和学习,本系列博客文中为个人对书中例题的重现和理解,仅供学习交流之用,请勿转载,文中个人理解可能有误,请大家支持作者和正版阅读原版,在此感谢作者,书名为'ES6标准入门' 首先由于阅览器的兼容问题,大家的es6代码如果需要实际运行必须经过解析为es5代码后插入网页才行,下面的方法直接使用了Google公司的Tr…
.指向const的指针例如:double a=1.01;const double * b=&a;*b=2.1; //这显然是错误的a=2.1; //这是正确的,a和*b的值都会变成2.01,有些人将之称为自以为指向const的指针 五.const指针例如:int a=10;int * const b=&a; //这意味着b只能指向aa=20;*b=30; //上面两句均可以改变变量的值. 另外和第四条有关系,并且比较有意思的是:typedef int * pint;int value=10…
Const 限定符 1. 等价 //const对象必须初始化//C++中const修饰的变量不能改变//C中const修饰的变量可以通过指针修改 2. ; const int j = i;//变量给常量初始化 3. ; const int &j = i;//正确,但不能通过j修改i 4. const int *a//底层const const修饰的是指针所指向的内存空间,即指针所指向的内存空间的值不能改变 int* const a//顶层const const修饰的是指针,即指针的值不能改变 5…