C++ Primer Plus P55~P124处理数据&复合类型

tech2024-10-18  10

浮点数
float:至少32位double:至少48位,且不少于floatlong double:不少于double float只能保存6位或7位有效数字,会丢失精度。
算数运算符

%为求余/求模,当其中一个为负数时,其结果满足**(a/b)b+a%b=a*

类型转换
赋值: 在进行赋值时,c++会自动将右值转换为左值,但有可能会降低精度,如浮点转换为整形、大浮点转换为小浮点以及大整形转换为小整形。 bool接受到0时将其转化为false,非零值则转换为true使用{}初始化: 允许整形转换为浮点型,但不能将浮点型转换为整形表达式: 在表达式中,bool,char,short,unsigned char,singed char均将被转换成int后再进行计算,这种转换被称为整形提升。 在bool值用cout输出时,会被转换成整形,使用**cout.self(ios::noolalpha)**会使cout能输出True或false值。传参: 由c++函数原型控制强制类型转换: (typeName) value / typeName(value) C++中提供的新类型转换方式static_cast(value)

复合类型

数组

不能将数组赋值给数组。 可以只初始化数组的一部分,如int a[4]={0,1},其他的元素将被初始化为0,若想要圈内部初始化为0,则只需要int a[4]={0}。

字符串

sizeof()为整个char数组的长度,strlen()是有效字符的长度 getline(name,length)为读取整行,length为长度限制,

String
strcpy(): 复制getline(cin,name): 用于string的行读取。

原始字符串: 在输入例如\n的字符时,不会被转义而是直接输出原本内容个,使用时在字符串前面加上R

结构体

可以以{}初始化其中的值,同样可以省略其中的值。

枚举

可以将多个枚举值设置为相同的量。 一种方法:state=STATE(1),枚举变量state将被设置为STATE中值为1的枚举值。

指针

&代表取地址 *为解除引用运算符,对指针使用时,可以取得该地址储存的值 不允许直接将地址赋给指针,必须将整形的地址转换为指针类型赋值 值为0的指针被称为空指针,也就是nullptr。 delete将会删除指针指向的内存,并不会删除指针本身。

用new创建动态数组: 声明数组时就为数组分配了固定的内存,这种方式称为静态联编,在编译中就被加入了程序。 若使用new,则是在运行程序时根据需要创建数组,并可以动态选择数组的长度,这杯被为动态联编。 在释放是,要用delete [] ptr,若没有[],删除的则是指针当前指向的元素。 指针数组在进行+i时,实际上加的是它所指向的类型的字节数。 同样也可以用这种方式创建字符串,并用指针代替字符串的名称。

自动存储: 在函数内部定义的常规变量使用,在函数被调用时产生,在函数结束时被释放。静态存储: 在整个程序执行期间都存在,使用static声明或在函数外部创建可以得到。动态存储: 拥有单独的内存池,和自动与静态存储分开。数据的生命周期起不受函数或程序限制,但会导致内存不在连续,追踪内存位置更加困难。
array

ep:array<int,5> ary 创建了int类型,长度为5,长度是固定的,使用静态存储中的空间,更加安全。 ary[-1]:代表将现在指针智子昂的元素向前移动两位

最新回复(0)