c++ primer打卡(三)
1.
int i=42;
int *pi=0;//pi被初始化,没有指向任何对象
int *pi2=&i;
pi2=0;//pi2不指向任何对象
2. 对于两个类型相同的合法指针,可以用==或!=来比较它们,比较的结果是布尔类型。
3. void*是一种特殊类型的指针,可以存放任意对象的地址。
4.指针是指向另外一种类型的复合类型
引用是对象的别名
5. int* p1,p2;//p1是指向int的指针,p2是int.
6. 引用本身不是一个对象,因此不能定义指向引用的指针,但指针是对象,所以存在指向指针的引用。
7.面对一条比较复杂的声明语句,从右向左阅读有助于弄清真实含义。
int i=42;
int *p;
int *&r=p;//首先r是一个引用,然后是一个int指针类型的引用。
8.const对象一旦创建后其值就不能被改变,创建时必须被初始化。
初始化常量引用时允许用任意表达式作为初始值。
int i=42;
const int &r1=i;
9. 常量指针:不变的是指针本身而非指向的那个值
int errNum=0;
int *const curErr=&errNum;
顶层const表示指针本身是个常量,底层const表示指针所指的对象是一个常量。
顶层const可以表示任意的对象是常量,这一点对任何数据类型都适用。
底层const则与指针和引用等复合类型的基本类型部分有关。
指针类型既可以是顶层const也可以是底层const.
int i=0;
int *const p1=&i;//顶层const
顶层const不受什么影响,但底层const的限制不能忽视。
10. 常量表达式是指值不会改变并且在编译过程就能得到计算结果的表达式。
const int sz=get_size();//sz不是常量表达式,因为具体值要在运行时才能获取到。
11.允许将变量声明为constexpr类型以便由编译器来验证变量的值是否是一个常量表达式。
声明为constexpr的变量一定是个常量,且必须用常量表达式初始化。
constexpr int sz=size();//只有当size是一个constexpr函数时才是一条正确的声明语句。
一般将类型比较简单,值也显而易见、容易得到的类型称为字面值类型。
算术类型、引用和指针都属于字面值类型。
一个constexpr指针的初始值必须是nullptr或者0,或者是存储于某个固定地址中的对象。
函数体内的变量一般来说并非存放于固定地址之中,因此constexpr不能指向这样的变量,而定义与所有函数体之外的对象其地址不变,能用来初始化constexpr指针。
限定符constexpr只对指针有效,与指针所指的对象无关。
constexpr int *q=nullptr;//q是一个指向整数的常量指针
constexpr吧它所定义的对象置为了顶层const.
12.
typedef double *p;//p是double*的同义词
using SI=Sales_item;//SI是Sales_item的同义词
13.auto类型说明符能够让编译器去分析表达式所属的类型。auto定义的变量必须有初始值。
auto能在一条语句中声明多个变量,但该语句中所有变量的初始基本数据类型必须一样。
auto一般会忽略顶层const,保留底层const.
14.decltype选择并返回操作数的数据类型。
const int ci=0 &cj=ci;
decltype(ci)x=0;//x的类型是const int
decltype(cj)z;//z是一个引用,必须初始化。
delctype((var))的结果永远是引用。
15.
struct Sales_item{}accum,trans;
struct Sales_item{};
Sales_item accum,trans;
可以为类的数据成员提供类内初始值用于初始化数据成员,没有初始值的成员将被默认初始化。
类内初始值不可用圆括号。
转载于:https://www.cnblogs.com/danny0706/p/6307349.html
c++ primer打卡(三)相关推荐
- C Primer Plus第三章总结
C Primer Plus第三章总结 关于整数和浮点数 关于整数的常用的关键词有:char.int .long.longlong.unsigned-- 浮点数常用的关键词有:double.float ...
- C++11 Primer Plus(三)之名称空间与类
自己写的C++11 Primer Plus 学习笔记,如有雷同不胜荣幸,如有错误敬请指正 1. 内存模型与名称空间 1. 单独编译(程序划分) 友好的程序代码结构: 头文件:包含结构声明和使用这些结构 ...
- Proxmark3教程3:IC卡三文件数据比对工具,轻松找出不同和相同
大家好,今天给大家介绍一款大杀器! IC卡做数据分析时,经常会用到数据比对,有时候为了找到数据的变化规律,可能要采集好多个dump数据. 针对多个数据,有时需要两两比对,少不了3个文件同时比对的情况, ...
- 插拔式物联卡、贴片式物联卡,ESIM卡,物联卡三种类型你都了解吗
根据使用场景和环境,提供插卡式(适合大.中.小SIM卡插槽).贴片式(5*6MM)和ESIM卡(空中写号),接下来,针对这三种不同类型的物联卡,我们来了解一下吧. 插拔式物联卡.贴片式物联卡,ESIM ...
- 宁波:市民卡三年内将实现“一卡多用、一卡通用”
一卡在手,既可坐公交车,又能购物甚至是交停车费.5月8日上午,宁波市市民卡工程建设领导小组(扩大)会议召开,会议公布了市民卡三年建设蓝图. 据了解,通过三年时间的建设,市民卡不仅可以在轨 ...
- 《C++ primer》--第三章
习题3.2 什么是默认构造函数? 解答: 默认构造函数就是在没有显示提供初始化式时调用的构造函数.它由不带参数的构造函数,或者为所有形参提供默认实参的构造函数定义.如果定义某个类的变量时没有提供初始化 ...
- java调用三汇语音卡,三汇语音卡
底板型号总线通道交换Asterisk传真资源 总线 SHT-2B/USB???? (含模块)USB2--- SHT-4B/USB?? (含模块)USB4--- SHT-4B/USB/REC(含模块)① ...
- C Primer Plus(三)
第三章数据和C 3.1示例程序 #include<stdio.h> int main(void) { float weight,value; scanf("%f",&a ...
- 变相裁员?人人车发奇葩通知:未离职员工每天打卡三次 只抄规则
现在人与人之间的信任能脆弱到什么地步? 只要是辟谣的,网友们都不信.官方辟谣的,更是要翻车. 早前,社交平台上就有人人车疑似破产的消息,官博.CEO齐上阵辟谣,但是破产传闻依旧不断.时不时有疑似人人车 ...
- raid卡三块硬盘以上,创建没有raid5
情况是三块硬盘以上创建的时候没有Raid5.只有raid0 raid 1,查看硬盘确实是三块以上硬盘状态都对. 进入controller management--Advanced Controller ...
最新文章
- Nagios的安装和基本配置(四:调试验证 错误总结)
- 为什么 JSP 还没有被淘汰?
- 程序员面试题精选100题(01)-把二元查找树转变成排序的双向链表[数据结构]
- Android 6种快速开发框架
- VMware竟然出了一款防火墙
- 梦聆轻量化音乐播放器源码
- 【C++ STL】priority_queue自定义排序函数
- MySQL 多表查询(Day43)
- Ubuntu下怎么通过命令完成蓝牙的配对和连接
- MQTT客户端代码(C语言)
- java编译器eclipse_java编译器eclipse
- 如何下载msdn上面的操作系统镜像
- 029 大数据之即席查询PrestoKylin
- 电脑连上手机热点后上不了网
- Doxygen错误error:failed to run html help compiler on index.hhp
- android 自定义锁屏凌驾于系统锁屏之上
- 使用DS12C887时钟芯片设计高精度时钟(单片机)
- 完美解决 iOS 中只旋转自己想要旋转的屏幕
- ENE轨道线的选股公式
- Tensorflow2 图像分类-Flowers数据及分类代码详解
热门文章
- 【Python实例第11讲】文本的核外分类
- 好好的虚拟机不能用了, 出现无法打开内核设备\\.\Global\vmx86: 系统找不到指定的文件的错误, 以下是网上找到的解决方法,亲测可用...
- lodop简单入门教程
- Asp.net Core 2.1新功能Generic Host(通用主机),了解一下
- Linux中脚本的使用方法
- C#知识点:操作XML
- CSS3中的过渡、动画和变换
- 【转】彻底删除打印机
- Android使用scrollview截取整个的屏幕并分享微信
- Java学习笔记-枚举类