C++ Primer Plus 学习笔记(一)

2023-05-16

目录

第二章. 开始学习C++

1. 主函数

2. 预处理器

3. endl

第三章. 处理数据

1. 简单变量

2. 整型

3. C++ 初始化:

4.字符

5. bool

6. const限定符

7. 浮点数

8. 算数运算符

9. 类型转换

 第四章. 复合类型

1. 数组

 2. 字符串

3. string 类


第二章. 开始学习C++

1. 主函数

int main() 等效于 int main(void)

即空括号等效于不接受参数。main函数相当于程序与系统的接口,可以看作返回值给操作系统并不给程序,区分大小写。

2. 预处理器

与 C 不同,C++ 风格的头文件没有拓展名,即没有 .h 后缀,如 iostream。

命名空间如:   

using namespace std;

使用using编译指令,可以更明确的指示所使用的变量或函数等属于哪。也可以只使用命名空间的某些元素,如:

using std :: cin
using std :: cout

来直接使用 cout,cin。 

3. endl

endl 在 iostream 头文件中定义,在 std 命名空间中,为控制符,作用与 '\n' 类似,使光标换行。 

第三章. 处理数据

1. 简单变量

变量名第一个字符不能是数字,区分大小写,只能是数字、字符和下划线(_),不能将C++关键字作为变量名,不要创建以下划线开头的变量名,把它留给标准库。

2. 整型

short (int) 至少16位;int 至少与 short 一样长;long (int) 至少32位; long long (int) 至少64位,至少与 long一样长。

3. C++ 初始化:

int wrens = 432;
int ham = { 24 };
int emus {7};

若大括号中没用东西,置零。这种形式只能用常量,不能用变量初始化。

int rocs = {}; // rocs = 0
int psy {}; // psy = 0;
int n = 10;
int pn { n };  // 不可以

整型字面值:即显示书写的常量,如200、173。C++ 使用前1-2位标识进制,第一位1-9表示十进制,0(数字零表示八进制,0x 或 0X 表示十六进制。

使用控制符可以使输出为想要的进制方式。

cout << std::dec; // 以后cout数字时输出十进制
cout << std::hex; // 以后cout数字时输出十六进制
cout << std::oct; // 以后cout数字时输出八进制

4.字符

char 类型实际是整型,它是否有符号由 C++实现决定。字符型有扩展类型 wchar_t,具体位数由系统底层决定,用 wcin 和 wcout 处理扩展字符流。

wchar_t bob = L'p';
wcout << L"tall" << endl;

char16_t   char32_t   同理,前者长16位,后者长32位,都是无符号类型。前者用前缀 u 表示,后者用 U 表示。

char16_t ch1 = u'q';
char32_t ch2 = U'\U0000222B'; // U\表示通用字符名,\u后接8位16进制,
                              // \U后接8位16进制,表示其他的字符名,如日耳曼元 
                              // 音等。

5. bool

true 和 false 可以转换成 int 类型,true 是 1, false 是0。

6. const限定符

类似#define,创建一个字符常量。要初始化,无法声明后再赋值。

7. 浮点数

float 至少32位,double 至少48位,且不少于 float,long double 不少于 double。有效位由低到高。浮点常量默认 double。

8. 算数运算符

求模时一正一负, 符号满足:(a / b) * b + a % b = a。

9. 类型转换

0 转换成 bool 为 false, 非0为 true。

强制类型转换:

int thorn;
(long) thorn  // 转成long
long (thorn)  // 转成long

计算机最自然的类型是 int 和 double,如两个 short 相加,计算机会先转成 int 结果再转成 short。

auto 关键字声明变量类型时:

auto m = 10; // m type int
auto n = 1.2 // n type double
auto x = 1.3e12L // x type long double

 第四章. 复合类型

1. 数组

数组声明时,元素个数可以是常量表达式,如:8 * sizeof(int),不能是变量。sizeof(数组名)是数组所有元素的字节数。数组初始化可以省略 “=“:

int num[8*sizeof(int)];  // 可以
int n =8;
int num2[n];  // 不可以
int count[4] { 12, 16, 11}; // 元素分别为12, 16, 11, 0

 2. 字符串

字符串结尾必须有 ‘\0’ ,‘s’ 和 “s” 不同,前者字符,后者字符串,有 ‘\0’。cout 允许字符串拼接:

cout << " I'd give my" " right arm.\n";
// 等价于
cout << " I'd give my right arm.\n";

拼接时第一个字符串的 ‘\0’ 被 ‘r’ 替换。

字符串输入时,cin 遇到 ‘ ’(空格)停止,遇到换行符不读取,留在输入队列。用cin.getline(数组名, 字符个数),读入一行字符,包括 ‘ ’,“字符个数“包括空字符,实际是要-1的,该函数会读取换行符并转成空字符。cin.get(数组名,字符个数)与 cin.getline()类似,也可以输入一个字符(cin,get(ch)),不过不读取换行符,即越不过换行符,需要再加 cin.get() 或 直接 cin.get(数组名,字符个数).get(),跨过换行符。

3. string 类

使用string类要添加头文件string,它在std空间中,要 using namespace std 或者std :: string使用。string类变量,自动处理处理字符串大小,同数组类似,可以用下标访问元素。初始化与字符串数组一样,未初始化的string类长度为0。

string str1 = "I "; //初始化
string str2 {"love "};  // 初始化
cout << str2[0] << endl;  //输出'l'
string str3;
str3 = str1 + str2; //拼接
str1 += str2;  // 拼接

4. 结构

与C不同,声明已定义的结构的变量时,可以省略关键字 struct,定义结构时,内部元素之间用分号(‘;’)分隔开。结构初化或者赋值时,用逗号(‘,’)始化:

struct dec  // 定义结构,元素间用分号
{
    char name[20];
    float vol;
    double price;
};
int main(void)
{
    dec duck1 = {"Daq", 0.12, 9.98}; // 初始化结构,元素间用逗号
    dec duck2 {"CDA", 0.14, 0.598};  // 另一种初始化方式
    dec duck3 {}  // duck3个元素置0
    dec duck4 = duck1;
}

同类结构可以用 ”=“ 赋值。可以定义没名称的结构类型,即定义时省略结构名称。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ Primer Plus 学习笔记(一) 的相关文章

  • 针对lenovo R7000平台的Ubuntu 18.04双硬盘双系统搭建

    双固态双系统安装 分区及启动挂载点 双固态需要把EFI启动项放在同一个硬盘中即在ubuntu分区时应将efi分区建立在和win10同一硬盘中 xff0c 选择启动挂载点时选择该efi分区或者直接不建立efi分区 xff0c 直接挂载在win
  • 如何使用ublox ZED-F9P 配置基准站、移动站+差分电台实现RTK定位

    格林恩德F9P RTK模块 xff0c 集成高精度板卡 ZED F9P 可同时接收GPS 北斗 xff0c GALILEO GLONASS 卫星系统的L1 L2频点 xff0c 结合高精度天线一体化设计 xff0c 体积小 xff0c 重量
  • 北斗卫星导航有哪些频段

    北斗系统是全球第一个提供三频信号服务的卫星导航系统 xff0c GPS使用的是双频信号 xff0c 这是北斗的后发优势 使用双频信号可以减弱电离层延迟的影响 xff0c 而使用三频信号可以构建更复杂模型消除电离层延迟的高阶误差 同时 xff
  • 北斗短报文介绍

    1 什么是北斗短报文通信 xff1f 北斗系统的短报文通信 xff0c 是指北斗地面终端和北斗卫星 北斗地面监控总站之间能够直接通过卫星信号进行双向的信息传递 xff0c 通信以短报文 xff08 类似手机短信 xff09 为传输基本单位
  • 什么是星基增强系统SBAS

    SBAS xff1a 英文全称Satellite Based Augmentation System xff0c 中文意思是广域差分增强系统 xff0c 如果不知道这是什么意思 xff0c 那么说星基增强系统相信大家都知道 广域差分增强系统
  • GNSS PPP和PPK区别

    01 PPP PPP全称Precise Point Positioning xff0c 译为精密单点定位 xff0c 属于单点定位也叫绝对定位 xff0c 精密单点定位是指利用载波相位观测值以及由IGS等组织提供的高精度的卫星星历及卫星钟差
  • 三轴加速度计计算俯仰角、横滚角、偏航角

    pitch是俯仰角 xff0c 是 点头 xff0c xff08 在固定翼飞机中则由升降舵舵机控制 xff09 yaw是偏航角 xff0c 是 摇头 xff0c xff08 在固定翼飞机中则由方向舵舵机控制 xff09 roll是旋转角 x
  • 如何使用UBLOX ZED-F9P +4G获取千寻差分,实现厘米级定位同时回传到IP服务器

    格林恩德F9P 4G RTK模块 xff0c 集成高精度板卡ZED F9P以及4G模组 xff0c 可同时接收GPS xff0c 北斗 xff0c GALILEO GLONASS卫星系统的L1 L2频点 xff0c 结合高精度天线一体化设计
  • 小型RTK/LITE RTK/Mini RTK CR202(9P+4G+imu) 惯导 实现高精度厘米级定位,输出组合导航位置,定位数据回传服务器

    格林恩德 CR202 是一款小巧 迷你的RTK设备 xff0c 集成高精度板卡 ZED F9P 与4G EC20通信模组 xff0c 内置惯性导航IMU三轴加速度计 三轴陀螺仪 CAN收发器 xff0c 支持多种差分链路包括4G 电台 支持
  • 常用CORS账号设置方法(千寻CORS、中国移动CORS、六分CORS、北斗CORS、迅腾CORS)

    1 千寻CORS账号设置方法 2 中国移动CORS账号设置方法 3 六分CORS账号设置方法 4 北斗CORS账号设置方法 5 讯腾CORS账号设置方法 格林恩德专注GPS北斗高精度定位 北斗短报文通信与无线传输应用产品的开发与市场拓展
  • NTRIPClient_1.7 工具使用方法分享

    1 打开NTRIPClient 1 7软件 2 选择串口和波特率 xff0c 正确的与板卡或者模块连接 点击编辑 xff0c 进入串口配置界面 选择正确的端口和波特率 3 输入正确的差分账号 输入千寻差分账号地址 端口 用户名 账号密码 4
  • 导航卫星的时间系统

    1 GPS时间系统 xff08 GPST xff09 GPS系统是测时测距系统 时间在 GPS测量中是一个基本的观测量 卫星的信号 xff0c 卫星的运动 xff0c 卫星的坐标都与时间密切相关 对时间的要求既要稳定又要连续 为此 xff0
  • JT808协议介绍 --- 格林恩德 CR202 RTK 高精度车载定位器协议解读

    部标808又称为JT808 xff0c JT808标准的全称是 道路运输车辆卫星定位系统终端通讯协议及数据格式 808协议适用于GPS定位车载终端和监控平台之间的通信 当前市面上 xff0c 普通车辆监测设备所安装的GPS定位器 xff0c
  • C++析构函数调用顺序

    文章目录 析构函数工作过程 1 执行析构函数的函数体 2 如果该类中拥有类对象成员 xff0c 且类对象有析构函数 xff0c 则以类对象成员声明次序的相反顺序调用其析构函数 xff0c 销毁类对象成员 3 按原来构造顺序的相反顶序向上依次
  • TCP通信C++实现小例子

    TCP通信C 43 43 实现案例 https www bilibili com video BV1Dt411p74c t 61 1746 61 61 全部来自以上视频 xff0c 纯属搬运 xff0c 小可爱有问题可以举手提问哈 61 6
  • 串行通信简介

    一 串行通信与并行通信 计算机与外界的数据交换称为通信 xff0c 通信分为并行通信和串行通信两种基本方式 并行通信 串行通信 并行通信 xff1a 并行通信指各个数据位同时进行传送的数据通信方式 xff0c 因此有多少个数据位 xff0c
  • 使用寄存器点亮一个LED灯 普中科技stm32(stm32f1103zeb6)

    板子 xff1a 普中科技stm32F1 芯片stm32f1103zet6 1 程序如下 xff1a include 34 stm32f10x h 34 导入头文件 typedef unsigned int u32 typedef是系统关键
  • day 5 select服务器和客户端

    select客户端代码 xff1a include lt stdio h gt include lt string h gt include lt sys socket h gt include lt netinet in h gt inc
  • python Requests添加Auth和Cert

    最近通过postman发起另外一个项目的请求 xff0c 鉴权较为复杂 xff0c 首先需要设置cert xff0c postman中设置如下 xff1a 需要设置basic auth的参数 然后将接口返回的token放入auth的bear
  • STM32笔记(三)---寄存器映射--BSRR分析

    STM32笔记 xff08 三 xff09 寄存器映射 BSRR分析 GPIO与引脚区别 GPIO包含在引脚内 xff08 引脚内还有电源 晶振等特殊功能引脚 xff09 xff0c 除GPIO拓展内容即为单片机最小系统 GPIO功能如何检

随机推荐

  • ROS赵虚左6.5 Rviz中控制机器人模型运动_选了odom坐标系后小车变白不能动

    原因 xff1a 配置文件中的参考坐标不应该是base footprint xff0c 而是你自己小车最下面那个 小脚 的坐标系 xff0c 我的是footprint 所以把参考坐标换一下就可以了
  • 超声波传感器的基础

    超声波传感器已经有几十年的历史了 xff0c 但是由于它们的性能 灵活性和低成本 xff0c 它们仍然占据着传感市场的很大一部分 随着越来越多的产品实现了自动化 xff0c 随着机器人 自动驾驶汽车和无人驾驶飞机的出现 xff0c 需求进一
  • pthread_create未定义的引用

    在ubuntu使用gcc编译时出现 pthread create未定义的引用 问题 解决如下 xff1a 在编译时加入 l pthread 例如gcc thread c o thr l pthread 原因 xff1a pthread不是l
  • Linux下vscode实现调试

    1 安装好vscode xff0c 安装对应的插件 2 编写代码 xff0c 点击右上角的三角形 xff0c 生成对应可执行文件 3 点击菜单栏中的终端 配置任务 xff0c 选择 c c 43 43 xff1a GCC build act
  • 二进制数与十进制之间的转换以及使用一个函数实现任意进制之间的转换

    其他进制转为十进制都可以实现 xff0c 只需要将函数中的10和2换掉你需要的就行 include lt stdio h gt include lt math h gt 1 二进制转换为十进制 int twoConvertTen long
  • vscode配置C语言编译调试的方法

    一 安装GCC 官方下载 如果你能从在线安装 xff0c 那最好就在线安装吧 不过在线安装太容易中断失败了 如果你能连上官网 xff0c 也可以选择从官网去下载离线安装包 https sourceforge net projects min
  • C语言之补漏(1)

    typedef 1 define与typedef区别 xff1f 相比起宏定义的直接替换 xff0c typedef是对类型的封装 xff08 通俗说就是对类型起一个别名 xff09 2 typedef可以给多个别名 typedef int
  • 关于学习如何组装基于F4V3S飞控的竞速穿越机

    广西 河池学院 广西高校重点实验室培训基地 系统控制与信息处理重点实验室 本篇博客来自河池学院 智控无人机小组 创作时间2020 8 22 组装一架穿越机 xff0c 你需要的一些最基本的 xff0c 能让它飞起来的配件有 xff1a 机架
  • STM32—串口

    串口介绍 串行接口简称串口 xff0c 也称串行通信接口或串行通讯接口 xff08 通常指COM接口 xff09 xff0c 是采用串行通信方式的扩展接口 串行接口 xff08 Serial Interface xff09 是指数据一位一位
  • 2021电赛元件清单(评论区有题目预测)

    2021 年全国大学生电子设计竞赛仪器设备和主要元器件及器材清单 本科组 1 仪器设备清单 数字示波器 xff08 100MHz xff0c 双通道 xff09 函数发生器 xff08 50 MHz xff0c 双通道 xff09 任意波信
  • 通过TCP实现客户端与服务端之间通信

    客户端发送的消息 xff0c 服务端接收并在终端中显示出来 服务端代码 xff08 server c include lt stdio h gt include lt sys socket h gt include lt netinet i
  • Qt导入Opencv出现undefined reference to cv::xxx

    Qt配置Opencv在Qt运行时报错undefined reference to cv xxx Face Recognizer报错 FaceRecognizer load const char 41 报错 首先 xff0c 如果出现cv x
  • ESP32 之 ESP-IDF 教学(十二)WiFi篇—— LwIP 之 TCP 通信

    本文章 来自原创专栏 ESP32教学专栏 基于ESP IDF xff0c 讲解如何使用 ESP IDF 构建 ESP32 程序 xff0c 发布文章并会持续为已发布文章添加新内容 xff01 每篇文章都经过了精打细磨 xff01 通过下方对
  • ACWING 799. 最长连续不重复子序列 (入门) (双指针算法)

    给定一个长度为 n 的整数序列 xff0c 请找出最长的不包含重复的数的连续区间 xff0c 输出它的长度 输入格式 第一行包含整数 n 第二行包含 n 个整数 xff08 均在 0 105 范围内 xff09 xff0c 表示整数序列 输
  • STM32串口通信晶振导致问题出现

    STM32串口通信问题 关于stm32串口通信的问题 xff0c 比较常见的主要是以下几个问题 xff1a 1 xff0c 因为波特率不同导致通信时出现乱码 xff0c 这是一个比较常见的问题 xff0c 也是比较容易发现和解决的问题 2
  • 解决ERROR: cannot launch node of type [move_base/move_base]

    最近拿了别人的程序跑 xff0c 直接将工作空间git了过来 xff0c 结果发现提示错误 xff1a ERROR cannot launch node of type move base move base Cannot locate n
  • 基于单片机控制的开关电源设计

    文末下载完整资料 1 概述 1 1 课题来源及意义 电源技术是一种应用功率半导体器件 xff0c 综合电力变换技术 现代电子技术 自动控制技术的多学科的边缘交叉技术 随着科学技术的发展 xff0c 电源技术又与现代控制理论 材料科学 电机工
  • Hikvison对接iSecure Center时获取Appkey和Secert、不显示API网关、预览时提示网络请求失败

    场景 SpringBoot 43 Vue 43 iSecure Center xff08 海康综合安防管理平台 xff09 实现视频预览 xff1a SpringBoot 43 Vue 43 iSecure Center xff08 海康综
  • request和response

    文章目录 前言一 request功能1 获取请求行数据 xff08 1 xff09 方法 xff08 2 xff09 获取请求头数据 xff08 3 xff09 获取请求体数据 2 其他功能 xff08 1 xff09 获取请求参数通用方式
  • C++ Primer Plus 学习笔记(一)

    目录 第二章 开始学习C 43 43 1 主函数 2 预处理器 3 endl 第三章 处理数据 1 简单变量 2 整型 3 C 43 43 初始化 xff1a 4 字符 5 bool 6 const限定符 7 浮点数 8 算数运算符 9 类