《C++PP》学习笔记2第四章复合类型

152 阅读2分钟

字符串以:'\0'结尾。

初始化字符串数组其余字符用'\0'结尾,然后用'\0'填充其余位置如:char boss[8]= "BOZO";

BOZO\0\0\0\0

cin使用 空格 制表符 换行符确定字符串结束位置。

每次读取一行字符串输入:getline(),例:cin.getline(name,20);通过换行符来确定行尾。

get(),例:cin.get(name,ArSize).get();//get()用来处理换行符

string类的赋值拼接和附加:

string str1;

string str2 = "hello";

str1=str2;

string str3;

str3 =str1 + str2;

str1 += str2;

string其他操作:

复制:strcpy(str1,str2)

拼接:strcat(str1,str2)

对于未初始化的字符串数组长度未知,因为strlen()是从数组的到遇到空字符。

共用体union

union one4all

{

int int_val;

long long_val;

double double_val;

};

适用于一个变量有多种格式,共用体的长度为其最大成员长度。

匿名共用体与结构体共用名字。

枚举enum

enum color{red,blue};

color band;

band = red;

枚举量可以提升为int,int不能自动转换为枚举。例如:int num = blue ;//合法

band = 1;//不合法

num = 3 + red;//合法

但是可以强制类型转换,例如: band = color(1);//band->blue

可以显式的给设置枚举变量的值

例如:enum color{red = 1 , blue = 3};

指针

home是一个变量,则&home是他的地址,*加地址表示地址存储的值。

int pt = &higgens; //将pt(而不是pt)初始化为&higgens

指向int的指针的长度和指向double的指针的长度一样。而*pt的长度是其类型的长度,例如:int *pt = new int; size of pt = 4 ,size of *pt = 4

释放内存:delete

(1)一个new对应一个delete。

(2)不要使用delete释放同一内存两次。

(3)new []数组需要释放必须用delete []。

(4)可以对空指针使用delete。

C++将数组名解释为地址

对数组使用sizeof得到是数组长度,对指针使用sizeof得到指针长度。

例:

int wages[3] = {1,2,3};

int *pt = wages;

sizeof(wages) = 24;

sizeof(pt) =4;

wages[3] = *(wages+3)

指针和字符串

如果cout一个字符的地址,他将会从该地址开始一直输出直到一个空字符

应使用strcpy/strncpy将字符串赋值给数组

vector和array类暂且不表,后续会深入学习。