码迷,mamicode.com
首页 > 编程语言 > 详细

c++语言知识点汇总

时间:2018-07-26 01:05:14      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:命令行   strcpy   ble   dde   win   inf   inter   知识点   bsp   

c++ primer version-5 的整理

section 1:

内置类型和自定义类型;

main函数的返回值:指示状态。0:成功;1:系统定义。

unix和win系统中,执行完程序可以使用echo命令得到返回值。

编译器不同?

iostream有四个IO对象,cin,cout 和 cerr clog (可以往流中写入数据)

输出运算符 << 的左侧必须是ostream对象,右侧为要打印的值,如果不是内置的类型,则需要运算符的重载(友元、成员函数,写法?);endl 除了结束该行,还可以刷新流,将buffer内容刷到设备;

命名空间,用于避免名字定义的冲突

当cin>>object作为循环判定条件时,效果是检测流的状态。有效:未遇到错误;无效:遇到无效输入 or 遇到文件结束符(eof:win使用ctrl z,unix 用 ctrl D)

edit-confile-debug 逐个修正bug

头文件的引用:如果是标准库,用<>,如果不是,使用"xx.h "

文件重定向:命令行 exefile_name <infile>outfile

----------------------------------------

section 2:变量与基本类型

int long 4B 以及long long 8B 的长度;当运算同时有带符号和不带符号的数,会转化为不带符号

可寻址最小单元 字节;存储基本单元 字(看计算机是64bit的)

0开头8进制;0×开头16进制

浮点数,指数部分用e表示,默认字面值是double

转义:常用的有 换行 \n

建议初始化每个内置类型变量

分离式编译——声明和定义;使用 extern 表示不定义,不初始化变量

命名规范:自定义类名大写开头,变量名小写

引用(这里指左值引用)必须初始化,需要且只能绑定在对象上,引用即别名

指针和引用都实现了间接访问。区别:指针本身就是对象,无需定义赋初值;允许对指针赋值和拷贝,可以指向不同的对象

空指针 NULL(相当于用0初始化指针) or nullptr(新标准,特殊类型字面值,推荐使用)

void* 指针:存放任意类型对象的地址,只能拿来作比较,or 赋值给另外的void×指针。不能操作该类指针的对象,因为只表示内存空间

const 对象必须初始化,如果想在多个文件间共享const对象,需要在定义前加extern

如果引用指向的是常量,则应该申明为常量引用 ;如果不是,那么对于它的常量引用不能通过引用来修改它的值,只能通过它本身修改

常量指针:顶层const(常量指针):int * const p,表示指针本身是常量,不能修改指针指向另外的对象;底层const(指向常量的指针),修饰的是*p,不能修改指向的值*p,可以换对象

aoto会忽略掉顶层const的特性

decltype 类型指示符,decltype(a) r,将r的类型设为a的类型,

constexpr(c++11) 常量表达式 会检查是不是常量表达式,在编译时会计算

typedef or using(新标准) 别名

头文件不能被定义两次——头文件保护符——#ifndef #define #endif

----------------------------------------------

section 3:字符串、向量、数组

头文件不用using namespace的声明

string s(n,‘c‘) 结果为n个c的串;初始化使用等号的是拷贝初始化

字符串能直接比较,getline(is,s)从is中读取一行给s

empty函数和size函数;size函数返回size_type类型变量,是无符号整型数,注意unsigned 数和整型数比较和运算

处理字符:cctype中包含了很多比较函数,例如isalpha(c)如果是字母时为真,tolower(c)如果c是大写字母,输出对应小写字母,否则原输出

vector就是个模板类,创建时需要实例化,初始化方式;使用范围for时,vector的遍历序列大小不能发生改变;

迭代器的目的是通用,所有stl容器都可以使用;可以用aoto变量指向 容器的begin or end返回值

字符数组 注意要留1个单位来保存空字符\0

数组也可以使用begin和end函数得到指针,end(a)表示a中最后元素的下一位置的指针

指针运算得到的类型是 ptrdiff_t 定义在cstddef头文件与机器相关的类型,是带符号的

strlen strcmp strcat strcpy 都是c风格的函数,c风格使用字符数组表示字符串,这在c++中也可以操作,且很多可以兼容运算,但不推荐

-----------------------------------

section 4:表达式

逻辑与和或的短路求值

少用++的后置版本,但是在*iter++形式广泛使用

sizeof 返回size_t类型

隐式类型转换 和 显式类型转换:static_cast(除了底层const外的从大类型到小类型的转换,也可以找回void×)  const_cast(底层const去掉const性质) reinterpret_cast(重新解释,很容易出错) dynamic_cast

---------------------------------------

section 5:语句

switch() case : default:

范围for语句,直接使用aoto,如果还需要对变量更改,必须是aoto &i

如果抛出了异常,但是没有catch,那么最终会转到terminate的标准库函数去处理,一般是程序非正常退出

标准异常:定义在4个头文件中:exception stdexcept 

---------------------------------

section 6:函数

传参:传值(指针也是拷贝),传引用(避免拷贝,与实参绑定,c++推荐使用);引用形参还可以返回额外信息,如果不想改变,则可以加const

顶层const传值时会忽略掉,所以尽量使用常量引用

数组不能拷贝,所以只能传指针或者引用。由于指针不知道数组的大小,所以,通过标记或者使用前尾指针or传递一个数组大小来解决

数组的引用 表示为 int (&arr) [10] 必须加括号,同样指针也是 需要加括号,不然就是10个指针构成的数组

main函数可以传参,argc,argv【】;其中argv[0] 表示程序名

如果实参的个数不知道,且属于同一类型,可以使用 initializer_list<T> il 传参,就相当于vector一样,是一个灵活的模板类,支持迭代器,不过内部的元素是const类型

省略符形参 仅仅可用于通用的类型

不要返回局部对象的引用或指针

返回值可以是vector,直接return {元素1,元素2....}

 

c++语言知识点汇总

标签:命令行   strcpy   ble   dde   win   inf   inter   知识点   bsp   

原文地址:https://www.cnblogs.com/zhang-qc/p/9369133.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!