<C++学习六>复合类型

本篇博客仅作为笔记,如有侵权,请联系,立即删除(网上找博客学习,然后手记笔记,因纸质笔记不便保存,所以保存到网络笔记)

如图所示,C++复合类型大致可以分为以下几类:

数组类:两种赋值方法:索引和列表

1 //方法一:索引
2 int a[10];
3 for(int i = 0; i < 10;++i){
4     a[i] = i + 1;    
5 }
6 //方法二:列表
7 int a[10] = {1,2,3,4,5,6,7,8,9,10};

vector类:模板类,存储在自由存储区(堆)中,允许超界索引,拥有成员函数at()等特性,将在后续学习中具体学习。

array:存储在自动存储区(栈)中,允许超界索引。

字符串:

(1)char数组字符串

  "string"是字符串常量,不是字符常量。只能赋给char数组和string类,不能赋值给char变量;

  数组中默认值(多余部分)会用\0(空字符)填充。cout和cin输入输出时以\0作为结尾。数组长度 = 字符长度 + 1;

  连起来的字符串常量会自动拼接起来,后一个的第一个字符取代前一个的最后一个字符:

  strcpy(a,b,size); //将b字符串数组复制给a。

  strcat(a,b,size); //将b字符串数组接在a后面。

(2)string类

  支持赋值运算符 =,支持列表赋值法{ }进行赋值;

  支持拼接和附加。

(3)字符串input

  输入流(istream)和getline等函数的方式。

(4)结构体:

  相当于声明一种全新的数据类型(自定义数据类型),与类类似,在C++中也可以看成一种类。

1 struct Student{
2     int num; //声明一个整型变量num
3     char name[20]; //声明一个字符型数组name
4     char sex; //声明一个字符型变量sex
5     int age; //声明一个整型变量age
6     float score; //声明一个单精度变量
7     char addr[30]; //声明一个字符型数组addr         
8 }

(5)枚举:

  enum工具用于创建符号常量。

(6)指针

  存储了一个值的内存地址。

  声明typeName* pointname(*为解除引用运算符,对指针使用时返回其内存地址对应的值)

  用&可以返回该值的内存地址,指针有三种赋值方法、

1 1、*haha = a;
2 2int *pn;
3      pn = &a;
4      int *pt = &a;
5 3int *pn = new int;
6      *pn = 1001;

  注意:数组名也是一个指针,默认指向第一个元素的内存地址。

(7)内存分配:

  1、栈内存。又叫自动存储内存,用于函数的私有作用域。函数结束时,栈内存中的存储值即消失。

  2、静态储存。静态储存的变量可以在整个生命周期中拿到,因此要么就在函数体外定义它,要么就用static定义它。

(8)动态内存:

  指针与new结合,提供了实现自动调整数组大小,自动创建复合类型的可能。

注意:为了防止内存泄漏,动态内存操作完后,一定要用delete释放内存。

posted @ 2018-09-11 13:44  daisy_ai  阅读(212)  评论(0编辑  收藏  举报