C++Primer基础部分

extern:

声明变量。
如果只是想声明一个变量而非定义它,就在变量名前加关键字  extern 。extern int i;//声明i而非定义i
extern语句如果包含 初始值就不再是声明了,而是变成了定义。例如:extern double pi=3.14.16;//定义
区别:函数声明无需函数体,用一个分号替代即可。

复合类型:引用、指针

 复合类型是指基于其他类型定义的类型。
一条声明语句由一个基本数据类型和紧随其后的一个声明符列表组成
目前阶段所学,声明符就是变量名

引用:

为对象起了另外一个名字,在声明的变量名前加&符号引用必须先初始化引用类型的初始值必须是一个对象错误示例:int &refVa14=10
引用的对象与声明的变量必须是同一个数据类型

指针:

* 指针是一个对象,可以给它赋值和拷贝
* 在生命周期内,可以先后指向几个不同的对象
* 无需在定义时赋初值,如果没有初始化,也将拥有一个不确定的值
* 如果指针指向了一个对象,则允许使用解引用符(操作符*)来访问该对象

void*指针:

可以用于存放任意对象的地址。 面对一条比较复杂的指针或引用的声明语句时,从右向左阅读 有助于弄清楚他的真实含义。const限定符:
防止程序运行的过程中修改值 默认情况下,const 被设定只在文件内有效
如果想在多个文件之间共享const对象,必须在变量的定义之前添加extern关键字。

constexpr变量:size_t

* 将变量声明为constexpr类型以便由编译器来验证变量的值是否是一个常量表达式
* 声明为constexpr的变量一定是一个常量,而且必须用常量表达式初始化

typedef关键字:

可以给类型起别名。
将复杂的类型简易化。

using:别名声明:

新标准规定的另一种起别名的方式

如:using SI=sales_item //SI是Sales_item的别名

auto类型说明符:

* auto定义的变量必须有初始值

decltype类型指示符:

* 选择并返回操作数的数据类型

直接初始化和拷贝初始化:

如果使用等号(=)初始化一个变量,实际上执行的就是拷贝初始化。
例:string s5=“hiya”;

反之,如果不是用等号(=),则直接初始化。
例:string s6(“hiya”);

toupper():

* C 标准库 - <ctype.h>
* C 库函数 int toupper(int c) 把小写字母转换为大写字母。
* 例子:* int toupper(int c);* c -- 这是要被转换为大写的字母。

定义和初始化内置数组:

  • 数组的维度说明了数组中元素的个数。

例如:a[d] a是数组的名字,d是数组的维度。
编译时维度应该是已知的的,所以维度必须是一个常量表达式。
当使用字符串字面值对此类数组进行初始化,一定要注意字符串字面值结尾处还有一个空字符。

不允许拷贝和赋值:

* 不允许使用一个数组初始化另一个数组* int 2[]={0,1,2};* int a2[]=a;     //错误
* 不能把一个数组直接赋值给另一个数组* a2=a;     //错误

注意:有些编译器支持数组的赋值,这就是所谓的编译器扩展,应当避免使用非标准特性。unsigned:
* unsigned的作用就是将数字类型无符号化。

指针和数组:

* 在很多用到数组名字的地方,编译器都会自动地将其替换为一个指向数组首元素的指针。* 例如:string *p2 = nums;   //等价于p2 = &nums[0]。* 在大多数表达式中,使用数组类型的对象其实是使用一个指向该数组首元素的指针。
*

size_t类型:

* 是一种无符号类型,它被设计的足够大,以便能表示内存中任意对象的大小。
* 头文件是:
* C++:<cstddef>
* C      :   <stddef.h>

ptrdiff_t:带符号类型使用数组初始化vector对象:

* 不允许使用一个数组为另一个内置类型的数组赋初值,也不允许使用vector对象初始化数组。
* 但是,允许使用数组来初始化vector对象。只需将拷贝区域的首元素地址和尾后地址就可以了。* 例如:int int_arr[]={0,1,2,3,4,5};* //ivec有6个元素,分别是int_arr中对应元素的副本* vector<int> ivec(begin(int_arr), end(int_arr));

多维数组:

* 多维数组的实质是数组的数组
* 对于二维数组来说,长把第一个维度称作行,第二个维度称为列

prtdiff_t:

* 是一种带符号的整数类型,它的空间足够大, 能够表示数组中任意两个指针之间的距离。
* 头文件是:#include<cstddef>

理解算术转换:

* char型的字符常量,可以表示一个数字值,具体的数字值依赖于机器上的字符集,一般来说‘a’对应的是数字值是97。
* 例如:int ival = 3.14159L + 'a'; 1int 值转换成long double

函数类型三要素:

* 返回类型、函数名、形参类型

try语句块和异常处理:

典型异常处理:失去数据库连接、遇到意外输入
throw表达式:用于异常检测
try语句块: 用于异常处理

try语句块以关键字开始,并以一个或多个catch子句结束。
抛出的异常通常由catch子句处理,所以catch子句也被称作异常处理代码。
一套异常类:用于在throw表达式和相关的catch子句之间传递异常的知识。

函数重载:

如果同一作用域内的几个函数名字相同但形参列表不同,我们称之为重载函数。
如:void print(const char *cp);
void print(const char beg,const int *end);
void print(const char ia[],size_t size);
不允许两个函数除了返回类型外其他所有元素都相同

例如:Record lookup(const Account&);
bool lookup(const Account&); //错误;与上一个函数相比只有返回类型不同
注意:不是所有情况都适用于函数重载,要看哪个更容易理解函数的意思。

引用返回值:

函数的返回类型决定函数调用是否是左值,调用一个返回引用的函数得到左值,其他返回类型得到右值。

NDEBUG预处理变量:

assert的行为依赖于一个名为NDEBUG的预处理变量的状态。

如果定义NDEBUG,则assert什么也不用做.

使用#define语句定义NDEBUG,关闭调试状态。

默认状态下没有定义NDEBUG,此时assert将执行运行时检查。

感兴趣欢迎加入QQ群,一起交流,也可以关注微信公众号:黑马金牌编程

C++Primer基础部分相关推荐

  1. OpenLayers 3 入门指南

    从使用OpenLayers 3到现在有差不多一年的时间了,OpenLayers是web端比较好的一个GIS引擎,广受大家的青睐,最开始我以为这是一个比较小众的引擎,没想到后面发现有很多人使用,并且还有 ...

  2. UVM Systemverilog EDA IP国外学习网站

    有些链接可能要设置浏览器代理才能访问!!!  SemiWiki - All Things Semiconductor! (半导体届的维基百科,罗列了各EDA,IP等供应商和行业资讯) WWW.TEST ...

  3. C Primer Plus基础教程(1)— 初步认识C语言

    C Primer Plus基础教程(1)-初步认识C语言 一.C语言的起源 1972年,贝尔实验室的丹尼斯・里奇( Dennis Ritch)和背・汤普进( Ken Thompson)在开发UNX操作 ...

  4. 看c++primer知识点总结(基础部分)

    看c++primer知识点总结(基础部分) 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 看c++primer知识点总结(基础部分) 前言 一.变量和基本类型 1.声明 ...

  5. c++primer 5th第15章基础、课后习题自己解析、心得体会等

    先看一个例子: #include <string> #include <memory> #include <iostream> using namespace st ...

  6. 《C++ Primer 5th》笔记(1 / 19):C++基础

    文章目录 编写一个简单的C++程序 编译.运行程序 初识输入输出 注释简介 控制流 while语句 for语句 读取数量不定的输入数据 if语句 类简介 Sales_item类 初识成员函数 书店程序 ...

  7. C++primer 第 4 章 表达式 4.1基础 4 . 2 算术运算符 4 .3 逻辑和关系运算符 4 . 4 赋值运算符 4 .5 递增和递减运算符 4.6成员访问运算符

    表达式由一个或多个运算对象(operand)组成,对表达式求值将得到一个结果(result) 字面值和变量是最简单的表达式(expression),其结果就是字面值和变量的值.把一个运算符(opera ...

  8. 【C++基础学习】《C++ Primer》中的“有序型”

    本人在看<C++ Primer(第三版)>中文版看到类一章时,遇到了"有序型"这个概念.(Page527) 原文摘录如下: 作为特例,有序型的const静态数据成员可以 ...

  9. C++ Primer Plus学习(一)—— 基础知识

    基础知识 预备知识 头文件名命名约定 名称空间/命名空间 C++源代码风格: 处理数据 变量名 位与字节 数据类型 为何float有效位数为7位 climits 初始化 整型 浮点数相对整型的优缺点 ...

  10. 深夜里学妹竟然问我会不会C?我直接把这篇文章甩她脸上(C Primer Plus 第六版基础整合)

    C Primer Plus 第六版 前言 第一章 初识C语言 一.C语言的起源 二.C语言的应用 三.C语言的特点 四.编译的过程 五.编码机制 1.简述 2.完成机制 六.在UNIX系统上使用C 七 ...

最新文章

  1. 2017敏捷沙滩大会:完美软件,测量持续交付,以及探索未来
  2. 计算机IP地址与子网掩码如何进行AND运算
  3. mongodb2.2.1安装
  4. 安装和运行Maven
  5. html图片自动替换图片,十种图片替换文本CSS方法
  6. 设计灵感|怎么设计渐变海报更有趣味性?
  7. HDU6109 数据分割【并查集】
  8. 第二次作业——个人项目实战之随机数独生成
  9. Nginx监控数据采集与分析
  10. java实现复数之间加减乘运算_用java实现复数的加减乘除运算(改进第1次)
  11. OSError: [WinError 126] module could not be found(OSError: [WinError 126] 找不到指定的模块)
  12. RFC5731 - 中文翻译(原创)
  13. 图片上怎么加文字?看完就你知道了
  14. Spring Boot 3.0.0-M1 Reference Documentation(Spring Boot中文参考文档)-附录A-C
  15. hive 启动报错java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%..
  16. 常用去除离群值的算法!
  17. linux网络编程 华清,网络编程(华清远见内部培训资料).ppt
  18. win10 神州网信政府版 (V0-G.1014.000) 关闭屏幕保护
  19. go-micro的安装问题
  20. 为什么数据治理项目会失败?

热门文章

  1. TSL1401 CCD传感器驱动
  2. Excel数据分析从入门到精通(九)28个图表之KPI分析
  3. Dialog_xml制作——博客地址
  4. hdu 2545 树上战争
  5. Airtest 之 poco 避坑大法
  6. Vuex入门及进阶笔记
  7. 360 腾讯 迅雷Windows编程 网络编程面试题及答案
  8. Filebeat自定义index和fields
  9. java 替换 ppt内容_Java 替换PPT文档中的文本和图片
  10. ubuntu安装wine版微信