对类型T, T*就是"保存T的地址"类型(也就是指向T类型的指针).也就是一个类型为T*的变量能保存一个类型T的对象的地址. 比如:
int* pi; //指向int的指针 char** ppc;//指向char的指针的指针 int* ap[15];//15个指向int的指针的数组 int (*fp)(char*);//指向函数的指针,这个函数参数是char*,返回一个int int* f(char*);//函数f的参数是char*, 返回一个int*
对指针的基本操作是间接访问,也就是说(访问被指针所指向的那个对象)这个操作也被称作间接.间接运算符是(前缀的)一元*. 比如:
char c = 'a'; char* pc = &c; char c2 = *pc;零
零(0)是一个整数.由于各种标准转换,0可以被用作任意整型,浮点型,指针,还有指向成员的指针的常量.所以0的类型由上下文来决定.
数组对于类型T, T[size]就是"具由size个T类型的元素的数组"类型.这些元素的下标从0到size-1.
另外多维数组表示为数组的数组.
float v[3];//数组v, 包含3个浮点数, v[0], v[1], [2] char* pc[3];//数组pc, 包含3个char*指针, pc[0], pc[1], pc[2] int d2[3][3];//数组d2, 包含3个数组,每个数组包含3个int数组的初始化
int v1[] = {1, 2, 3};//不需要指定数值的数量, 因为后面的初始化明确了有3个int
int v2[] = {};//错误, 不知道v2有几个元素
int v3[3] = {1, 2};//可以, 缺的用0填充
int v4[3] = {1, 2, 3, 4};//不行, 越界了
int v5[] = v1;//错误, 数组间不能赋值
字符串文字量
字符串文字量是用双引号括起来的字符序列
"this is a string"
一个字符串文字量里包含的字符个数比它看起来的字符数多一个,它总由一个空字符' '结束.
sizeof("Boss") == 5
字符串文字量的类型是"若干个数的const字符的数组", 所以"Boss"的类型就是const char[5](因为后面还有个空字符' ')
但是你可能会奇怪为什么你用字符串文字量赋值给一个char*, 这是因为以前c和c++定义中, 字符串文字量的类型就是char*, 为了保证以前的程序也能在新的c++中运行, 编译器会做一些转化.
转义字符, 为了在字符串常量里能表示" , ' 之类的字符, c++提供了转义符
如'n'代表换行符, ' ' '代表字符'
在字符串里不能真正的换行
char string = "adadadada
adadadadad ";//错误
char string1 =
"adadadadadadad"
"adadadadada";//正确
指针指向数组
int v[] = {1, 2, 3};
int* p1 = v;//指向数组的第一个元素(隐式转换)
int* p2 = &v[1];//指向数组的第二个元素



