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

浮点数
  • float:至少32位
  • double:至少48位,且不少于float
  • long 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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值