C++ 学习笔记(一)
时间:2019-09-13
本文章向大家介绍C++ 学习笔记(一),主要包括C++ 学习笔记(一)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
变量的声明与定义
声明关键字 extern
extern int a; //声明
int a; //声明并定义
extern int a = 1; //定义
变量可以被多次声明,仅可定义一次
若想在多个文件中同时应用const 对象,需要在const前加extern
extren const int a = 100;
const 限定符
对const 的引用(简称常量引用)
例:
int i = 42;
const int &r1 = i;
const int &r2 = 42;
const int &r3 = r1 * 2;
常量引用可以对非常量执行,但是无法修改引用值,也不能通过引用值修改常量.
指向常量的指针
const 可以令指针指向常量或非常量.
不过指针不能修改所指对象的值.
const double pi = 3.14;
const double *cptr = π
printf("%.2lf\n",*cptr);
double dval = 3.16;
cptr = &dval;
printf("%.2lf\n",*cptr);
output:
3.14
3.16
所谓指向常量的指针,仅仅是指不能通过该指针改变常量的值,但是可以通过其他方式改变
const指针
即指针是对象,把指针本身定位常量
即指针本身指向不可更改,但可通过其改变其指向的非常量的值
int a = 0;
int *const pa = &a; //常量指针
const double pi = 3.14;
const double *const ppi = &pi //指向常量的常量指针
顶层const
- 顶层const表示指针本身是个常量,
- 而底层const表示指针所指对象是个常量.
目前所见有
int *const p = &i; //顶层const
const double pi = 3.14; //顶层const
const double *ppi = π//底层const
const int &r = i; //用于声明引用的const均为底层const
分别const是底层或顶层时,按定义区分即可.
在底层const对象的拷贝中,拷入与拷出必须拥有相同的底层const资格,或两者两者类型可以进行转换.
常量表达式
即值不会改变,且值在编译过程中就可得到
例如
const int mx = 100;
const int mxx = mx + 10;
而如下表达式就不是
const int x = get_size(); //编译过程无法得到其值,须运行时确定
int y = 10; //值不确定
constexpr限定符
将变量声明为constexpr类型,可由编译器来验证变量的值是否是个常量表达式.
且可用于声明函数,但此类函数须足够简单,能让编译器编译后即可得到结果.这样的函数,就可以去初始化constexpr变量
constexpr int mf = 20;
constexpr int limit = mf + 1;
constexpr int sz = size(); //size() 为constexpr函数
constexpr 定义的指针和引用初始值受到严格限制.
即定义在任何函数中的变量均不可被constexpr修饰,因为函数体内的变量定义一般并不会存放在固定地址.
注意: 若constexpr定义中存在指针,则此指针为常量指针,即与其指向的对象无关.
const int *p = &i; //指向常量的指针
constexpr int *q = &j; //常量指针
原文地址:https://www.cnblogs.com/rainyy/p/11516466.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Mysql5中Packet for query is too large (3396053 > 1048576),数据量太大解决方案
- 关于 servlet 的这个问题,你能答对吗?
- MYSQL数据优化常用配置参数
- Hadoop分块存储解析及还原分块存储的文件
- ValueError: too many values to unpack (expected 2)
- VMware15更新后克隆Centos7发现网卡起不来了
- 基于SSH的医院在线挂号
- Linux-远程拷贝(scp命令)
- Kettle使用JavaScript代码处理数据
- Hadoop入门---(wordcount)统计单词出现的次数
- JS去除字符串的空格
- insertionSoft(插入排序) 2.1-1 And 重写insertionSoft 2.1-2
- Swagger-Springboot-mybatis-mysql
- Python+java+websocket+SpringMVC实时监控数据库中的表
- 基于Java图形界面的IPV4与网址的地址解析器