您的位置:首页 > 编程语言 > C语言/C++

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: