C++ Primer Plus读书笔记(三)复合类型
这节主要是介绍数组、结构体、类等概念,以及new delete内存管理。
1、数组
首先普及一下C++中字符串的概念,只有在结尾有 \0 的才叫字符串, cout 输出字符串也以空字符为标记进行结束输出。
2、输入
读取一行数据,有两个函数可以实现
1 cin.get();
2 cin.getline();
其中cin.getline()会把末尾的空字符丢掉。读取指定长度可以这么用 cin.getline(name, LENGTH);
3、string类
注意下边这种用法,这是明显区分与C语言的字符串数组的特性。
1 string str1;
2 string str2;
3 string str3;
4
5 str1 = str2 + str3;
4、结构体
这个和C语言没什么区别。
5、指针
1 - new的用法
1 type_name* point_name = new type_name;
2
3
4 int* array = new int [10];
5 delete [] array; //对应的释放
2 - delete
1 int* ptr = new int;
2 delete ptr;
需注意几点:
a. 只能释放new出来的内存,delete参数是地址(ptr而不是*ptr)
b. 可以释放空指针
3、C++将数组名解释为数组第一个元素的地址:
1 double wages[10] = {};
2
3 wages == &wages[0]
4、关于指针数组
1 struct year_end
2 {
3 int year;
4 //some else
5 };
6
7 struct year_end s1, s2, s3;
8 struct year_end * arp[3] = {&s1, &s2, &s3};
9
10 struct year_end **arp2 = arp;
11 auto ppb = arp; //use auto
5、摸板类vector
数组的替代品,使用new和delete自动进行内存管理。用法举例:
1 #include <vector>
2
3 vector<int> vint; //一个int型的vector对象
4 vector<double> vdouble(n); //一个double型的vector对象
5、模板类array
1 #include <array>
2
3 using namespace std;
4
5 array<int, 5> array_int;
6 array<double, 10> array_double = {1.1, 2.2, ...};
7
8 array<type_name, number> array_name;
ps:number不能是变量,只能是常量
访问vector或者array时,可以使用自身的成员函数 at ,有检查越界的保护,举例:
1 array_double.at(1);
2
3 array_double.begin();
4 array_double.end();
5 //确定边界的成员函数,后边再说
C++ Primer Plus读书笔记(三)复合类型的更多相关文章
- 【转载】MDX Step by Step 读书笔记(三) - Understanding Tuples (理解元组)
1. 在 Analysis Service 分析服务中,Cube (多维数据集) 是以一个多维数据空间来呈现的.在Cube 中,每一个纬度的属性层次结构都形成了一个轴.沿着这个轴,在属性层次结构上的每 ...
- C++ primer plus读书笔记——第4章 复合类型
第4章 复合类型 1. 如果将sizeof运算符用于数组名,得到的将是整个数组中的字节数. 2. 如果对数组的一部分进行初始化,则编译器把其他元素设置为0.因此,将数组中的所有元素初始化为0,只要显式 ...
- C++ Primer Plus 第四章 复合类型 学习笔记
第四章 复合类型 1. 数组概述 1.1 数组的定义 数组(array)是一种数据格式,能够存储多个同类型的值.每个值都存储在一个独立的数组元素中,计算机在内存中依次存储数组的各个元素. 数组声明的三 ...
- 《你必须知道的.NET》读书笔记三:体验OO之美
此篇已收录至<你必须知道的.Net>读书笔记目录贴,点击访问该目录可以获取更多内容. 一.依赖也是哲学 (1)本质诠释:“不要调用我们,我们会调用你” (2)依赖和耦合: ①无依赖,无耦合 ...
- Spring揭秘 读书笔记 三 bean的scope与FactoryBean
本书可作为王富强所著<<Spring揭秘>>一书的读书笔记 第四章 BeanFactory的xml之旅 bean的scope scope有时被翻译为"作用域&quo ...
- Struts2技术内幕 读书笔记三 表示层的困惑
表示层能有什么疑惑?很简单,我们暂时忘记所有的框架,就写一个注册的servlet来看看. index.jsp <form id="form1" name="form ...
- ES6读书笔记(三)
前言 前段时间整理了ES6的读书笔记:<ES6读书笔记(一)>,<ES6读书笔记(二)>,现在为第三篇,本篇内容包括: 一.Promise 二.Iterator和for of循 ...
- 《C++ Primer》读书笔记 第一章
读<C++ Primer>才知道,自己对C++知之甚少... 写个博客记录下自己C++的成长,只是读书笔记,不是对<C++ Primer>知识点的总结,而是对自己在书上看到的以 ...
- Mastering Web Application Development with AngularJS 读书笔记(三)
第一章笔记 (三) 一.Factories factory 方法是创建对象的另一种方式,与service相比更灵活,因为可以注册可任何任意对象创造功能.例如: myMod.factory('notif ...
- Java Script 读书笔记 (三) 函数
1. 函数作用域 在函数内部定义的变量,外部无法读取,称为"局部变量"(local variable). 变量v在函数内部定义,所以是一个局部变量,函数之外就无法读取. 函数内部定 ...
随机推荐
- 160个Crackerme破解
001: 第一个破解: 有两种登陆方式:序列号/名字和序列号,观察报错信息 两个报错信息,直接中文搜索字符: 第一种登陆方式报错为:sorry,xx 右键中文字符搜索,ctrl+f输入要搜索的字符,这 ...
- ConstraintLayout 学习笔记
如何阅读 xml 属性 与 Relativelayout 不同,ConstrainLayout 的属性需要同时说明需要怎么操作自己与目标控件,例如:layout_constraintLeft_toLe ...
- 根据租户id获取部门树状结构有父子结构的数据list
/** * 根据租户id获取部门树状结构 * @param tenantId * @return */ @GetMapping("getDeptTreeList") public ...
- easyui中连接按钮样式
方法1. <a href="otherpage.php" class="easyui-linkbutton" data-options="ico ...
- laravel 数据库之DB类
// 取回数据表的第一条数据 DB::table('table')->where('key', 'value')->first(); DB::table('table')->firs ...
- JS验证三种提示框
1 <form> 2 <!-- 按钮选择点击 --> 3 <tr> 4 <td><input type="button" na ...
- spring boot 部署到tomcat
网上很多文章描述过,当我按步骤做时会抛各种错误,最后记录下我的做法(成功发布到本地 Tomcat9 ): 1.将项目的启动类Application.java继承SpringBootServletIni ...
- ping 路由跟踪
pathping: pathping ip地址/网址 C:\Users\Administrator>pathping 119.29.18.11 通过最多 30 个跃点跟踪到 119.29.18. ...
- 卷积神经网络学习笔记——Siamese networks(孪生神经网络)
完整代码及其数据,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/DeepLearningNote 在整理这些知识点之前,我 ...
- 【剑指 Offer】08.二叉树的下一个节点
题目描述 给定一颗二叉树和其中的一个节点,找出中序遍历序列的下一个节点.树中的节点除了有两个分别指向左右节点的指针,还有一个指向父节点的指针. Java public class Solution08 ...