C++primer
2016-05-18 21:38
519 查看
第2章 变量和基础类型
1.带符号类型和无符号类型混合运算时,带符号数会自动转换成无符号数。2.true和false 是布尔类型的字面值,nullptr是指针字面值。
C++程序最好使用nullptr,同时尽量避免使用NULL。
#include <cstdlib> #define NULL 0
3.指定字面值的类型,如
L'a' //宽字符型字面值,wchar_t
4.定义于函数体内的内置类型的对象如果没有初始化,则其值是未定义。类的对象如果没有显示地初始化,则其值由类确定。
5.第一次使用变量时再定义它。
6.复合类型:指针和引用
引用即别名:引用并非对象,它只是为一个已经存在的对象所起的另一个名字。
int a=5; int &ref_a=a; int &ref_b; //错误,引用必须被初始化
指针和引用的异同?
相同点:引用和指针都实现了对其他对象的间接访问。
不同的:①指针本身就是一个对象,允许对指针赋值和拷贝。②指针无须再定义时赋值。
③引用不是对象,没有实际地址,所以不能定义指向引用的指针。
理解复合类型:面对一条比较复杂的指针或引用的声明语句时,从右向左阅读有助于弄清它的真实含义。
int *p1,p2; //p1是指向int的指针,p2是int int ival=5; int *pi=&ival; int **ppi=π //指向指针的指针 int *p; int *&r=pi; //指向指针的引用
7.const
const和指针:
如果关键字const在*左边,表示被指物是常量;如果出现在*右边,表示指针自身是常量。
const的引用:
const int ci=1024; const int &r1=ci; //right int &r2=ci; //wrong, we can't change ci throw r2
int ci=5; const int &r1=ci; //right,we can bind r1 to ci but we can't change ci throw r1
8.类内初始值
C++11规定,可以为数据成员提供一个类内初始值。创建对象时,类内初始值将用于初始化数据成员。没有类内初始值的成员将被默认初始化。
class 和 struct 定义的最后加 分号
class ClassName { //.... }; //分号 struct StructName { //... };
第3章 字符串、向量和数组
理解复杂的数组声明//从数组的名字开始“由内向外”的顺序阅读 int *ptr[10]; //ptr数组,含有10个int\*的元素 int &refs[10]=/\*?\*/; //错误,数组的元素应为对象,因此不存在引用的数组 int (*p)[10]=&arr; //p是指针,指向含有10个int的数组 int (&ref)[10]=arr; //ref是引用,引用含有10个int的数组 int *(&ref)[10]=ptrs; //ref是引用,引用含有10个int\*的数组
动态二维数组:/content/6714017.html
C风格字符串
#include <cstring> //"string.h" strlen(p) strcmp(p1,p2); strcat(p1,p2); strcpy(p1,p2);
相关文章推荐
- C++对C扩展之默认参数(default)
- C++中JSON文件的读取
- c语言程序编译过程
- c的调试
- c++使用指针指向的字符串,如何判断字符串结束
- 第7周项目3- C++游戏系列3:用多文件组织角色类
- 使用sizeof()计算类的大小
- 【C++】:C++的一道二维数组问题探究
- 快速排序
- leetcode 字符串的所有的真子集
- C++ 文件输入输出 (一)
- 关于C语言中的文件操作
- leetcode
- 【C++】:C++函数重载的映射机制(内容较深)
- 【C++】:C++函数重载
- C++课堂作业_02_PAT1025.反转链表
- C++课堂作业_02_PAT1025.反转链表
- C++第5 次上机作业
- RAD 10 C++Builder的bug
- C++ const限定符详细说明