C++学习笔记:复合类型

Keep going~

1.string类

  • 包含头文件string.h,并提供using编译指令 using namespace std
  • 可以用数组表示法来访问存储在string对象中的字符。
  • 程序能够自动处理string的大小。
  • string对象可以相互赋值
str1 = str2;
  • 可以使用+将两个string对象合并起来:
str3 = str1 + str2;  //将合并的string赋给str3
str2 += str1;        //将str1附近到str2的末尾
strcpy(charr1, charr2); //字符数组复制
strcat(charr1, charr2); //字符数组合并(结果并入charr1)

将第一行输入读取到string对象:

getline(cin, str);
  • R原始字符串语义:不对转义字符作处理,也可以使用"而非\"
R"(Jim "king" uses "\n" instead of endl.)"

上述代码将显示为:

Jim "king" uses "\n" instead of endl.

R"+*(...)*+"可包含"()"

2.结构体:struct

  • 外部声明
    内部声明
    (c++不提倡使用外部变量,但提倡使用外部结构声明)
  • 可以将结构作为参数传递给函数,函数也可以返回结构。
  • 可以使用赋值运算符=将结构赋给另一个同类型结构。
  • 可同时完成定义结构和创建结构变量的工作。
  • 结构数组
inflatable guest[2]=
{
    {"Bambi", 0.5, 21.99},
    {"Robb", 200, 565.99}
};
  • 结构中的位字段。
    指定占用特定位数的结构成员。
    字段的类型为整型或枚举,接:再跟一个数字,其指定了使用的位数。

3.共用体:union

  • 一种数据格式,能够存储不同的数据类型。但只能存储intlongdouble.
  • 句法与结构相似
  • 用途:当数据项使用两种或更多种格式(但不会同时使用)时,可节省空间。
struct widget
{
    char brand[20];
    union id
    {
        long id_num;
        char id_char[20];
    }id_val;
};

4.枚举:enum

  • 枚举量为整型,可被提升为int类型
enum spectrum {red, orange, yellow, green, blue, violet, indigo, ultraviolet};

其中spectrum为新类型,redorange等作为符号常量,对应整数值0~7。

  • 设置枚举量的值
enum bigstep { first, second = 100, third};

这里first的值为默认值0,third的值为101。

5.指针与自由存储空间

  • 自动存储
    局部变量,作用域为包含它的代码块(自动变量,通常存储在栈中)
  • 静态存储(静态变量)
    1. 在函数外部定义
    2. 声明变量时使用关键字static
  • 动态存储
    newdelete管理了一个内存池(自由存储空间或堆)
    能够在一个函数中分配内存,而在另一个函数中释放它。

6.类型组合

间接成员运算符。

...
s.year = 1999;
stru_year *pa = &s;
pa->year = 1999; //通过间接成员运算符访问成员,pa为指针。

7.数组的替代品

  • 模板类:vector
    类似于string类,也是一种动态数组。
    是使用new创建的动态数组的替代品。
#include <vector>
...
using namespace std;
vector<int> vi; //整型空数组
int n;
cin >> n;
vector<double> vd(n); //浮点型长度为n的数组
  • 模板类:array(C++11)
    与数组一样,长度固定,效率相同。允许对象赋值(数组只能逐个复制)
#include <vector>
...
using namespace std;
array<int,5> ai; //整型长度为5的数组
array<double,4> ad={1.22.13.434.3}; //浮点型长度为4的数组
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值