c++ primer plus 复合类型之字符串、string、结构体、共用体、指针

    科技2026-09-22  20

    字符串就是char为类型的数组,初始化使用大括号,每个字符使用单引号,最后加上空字符。

    以空字符结尾,即\0.标记字符串的结尾。

    如 char cat[10] ={'f','a','t','e','\0'};

    还有一种更简单的表示方式:使用一个引号括起来即可,会隐式包括空字符。而不需要我们人为添加上去。

    如 char fish[] = "busdd";

    每次读取一行字符串的输入

    cin.getline()    通过回车键输入的换行符确定输入结尾。会丢弃换行符。

    而cin.get()会将换行符保存,不丢弃。

     

     

    string类使用起来比数组简单,需包含#include <string> ,视同名称空间std.

    可以使用c风格字符串来初始化。如string  str = "class";

    可以使用cin来键键盘输入存储到string对象中。

    可以使用cout来显示string内容。

    可以使用strcpy、strcat进行复制、拼接。

     

    结构体

    结构体的初始化

    struct Sperson

    {

    char name[20];

    string  addr;

    int  id;

    int age;

    };

    Sperson   person ={ "wang","shanghai",1,20};

    结构体支持将string类作为成员对象。

    可以使用赋值运算符(=)将结构赋给另一个同类型的结构。即使成员是数组。

    还可以延伸到结构数组。

     

    共用体(union)

    像结构体一样可以存储不同数据类型,但只能同时存储其中一种类型。所以共用体的长度为最大成员的长度。

     

    枚举(enum)

    提供一种创建符号常量的方式,可以替代const.//默认情况下,第一个枚举值为0.也可以通过赋值运算符来显性设置

    如enum TYPE {his,real};   TYPE   Type;  

    如enum TYPE {his = 100,real=110};   TYPE   Type;  

     

    指针

    使用new创建动态数组

    如果使用new[]为数组分配内存,则使用delete[]来释放。

    不要使用delete释放同一内存块两次。

    指针算术,指针变量加1,增加量等于它指向的类型的字节数。如 p = p +1;

     

    数组和指针

    数组的地址

    数组名被解释为其第一个元素的地址,而对数组名应用地址运算符时,得到的是整个数组的地址。

    所以 int a[10];   a+1 和 &a +1 是不一样的。  &a + 1 相当于 a+10 ,即下一个数组的地址。  int (*p)[10] =  &a ;

     

     

    Processed: 0.440, SQL: 9