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在函数内部定义,所以是一个局部变量,函数之外就无法读取. 函数内部定 ...
随机推荐
- MySQL建立索引遵循原则的注意点
1.选择唯一性索引 唯一性索引的数据是唯一的,可以更快的通过该索引查询某条数据. 2.为经常需要排序,分组和联合操作的字段建立索引 order by,group by的字段在排序操作时很是耗时,可以对 ...
- 点名小辣辣,带你入门 JMeter (。・∀・)ノ゙
什么是 JMeter Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测 试但后来扩展到其他测试领域. 它可以用于测试静态 ...
- javaNio 通道和缓冲区
/** * 大多数操作系统可以利用虚拟内存将文件或文件一部分映射到内存中,然后这个文件就可以被当做内存数组一样被访问:避免底层IO的开销<p> * [通道]是一种用于磁盘文件的一种抽象:& ...
- JAVA JVM助记符
ldc:将int/float/String类型的常量值从常量池中推送至栈顶(栈顶的值是即将要用的) bipush:将单字节(-128 ~ 127)的常量值从常量池中推至栈顶 sipush:将一个短整型 ...
- Phoneix(一)简介及常用命令
一.简介 Apache Phoneix是运行在HBase之上的高性能关系型数据库,通过Phoneix可以像使用jdbc访问关系型数据库一样访问HBase. Phoneix操作的表以及数据存储在HBas ...
- 强大生产力工具Alfred
今天要给大家介绍的工具是Alfred,一款Mac下的高效生产力产品.它能做什么呢?简单的说就是:让你能够通过打几个字,就可以完成原本需要一顿操作的事情.举一个简单的栗子:如果我们要在Google搜索一 ...
- js 判断用户是手机端还是电脑端访问
通过userAgent 判断,网页可以直接使用 navigation对象 node端 可以通过请求头的 ctx.request.header['user-agent'] const browser = ...
- Promethues 之 Thanos
Promethues简介和原理 请看我之前写的 Prometheus简介,原理和安装 https://www.cnblogs.com/you-men/p/12839535.html 官方架构问题 官方 ...
- linux系统Vsftpd搭建FTP
安装vsftp 使用yum命令安装vsftp #yum install vsftpd -y 添加ftp帐号和目录 先检查下nologin的位置,通常在/usr/sbin/nologin下 (*no ...
- 【EXPDP/IMPDP】ORACLE数据泵导入导出案例(expdp & impdp)
概要: 因项目需要,通常需要将生产库下的部分数据抽取并恢复到测试库上 本文主要介绍数据泵导入导出的几种情况以及错误处理 案例环境: rhel-server-6.5-x86_64 oracle 11.2 ...