c++ primer plus学习笔记(1)——基础知识

2023-05-16

 本人还有一星期要开始期末考试了,复习c++时顺便挖个坑,之后会详细更新。


目录

1 初识源代码

        1.1 c++程序的产生 

        1.2 代码例

1.3 标记、空白

2 简单数据类型

2.1 变量名

2.2 变量类型

2.3 变量大小、功能

2.4 使用变量

2.4.1 变量声明

2.4.2 变量赋值

2.5 限定符

2.6 字面量

3 简单输入输出

3.1抽取、插入运算符

3.2转义序列

4 简单宏

4.1 #include

4.2 #define


1 初识源代码

本节只做大致科普,熟悉的课跳过

1.1 c++程序的产生 

我们编写的是源代码,即cpp文件

1.2 代码例

 看以下代码:

#include <iostream>  
using namespace std; //编译指令
int main()           //主函数
{                    //块开始
    cout << "hello"; //输出语句
    return 0;
}                    //块结束
  • 第一行是宏(详见???),第二行是using编译指令(详见???),这两行使得第五行cout语句有效
  • // 后的内容是注释,即机器将忽略源代码中,// 后同一行的内容
  • ; 代表语句结束
  • 第三行是main函数的开头,程序将从这里开始执行
  • 第四行和第七行是main函数的内容,被称为块,{ } 分别代表块开始和结束
  • 第五行是cout语句,将指定内容发送至屏幕
  • 第六行是return语句,执行这句话时将立即结束当前块,而不是逐句执行到块末

1.3 标记、空白

  • 标记:不可分割的一个整体,能被机器识别
  • 空白:空格、制表符、回车

 如前文中,int、main、cout就是标记,中间的空格就是空白。我们在编写代码时,应用空白将标记隔开,与代码标准风格统一,具体如下:

  • 每条语句占一行。
  • 括号应成对。
  • 语句应根据块(大括号)进行缩进。
  • 函数名和其括号间没有空白。


2 简单数据类型

将可修改的信息存储在计算机中,我们需要指明信息的存储位置和内存空间大小。这被高级程序语言抽象为“变量”。变量包括三个部分:变量名、变量类型、变量的值。

2.1 变量名

变量名遵守命名规则:

  • 在名称中只能使用字母、数字和下划线(_)。
  • 第一个字符不能是数字。
  • 区分大写字符与小写字符。
  • 不能将C++关键字用作名称。

 值得一提的是,以下划线开头的名称大多都被库中的变量使用。

2.2 变量类型

基本变量分为两种类型:整型、浮点型。整型变量存储整数;浮点型变量存储浮点数,即实数。同类型的不同变量使用不同的内存空间大小,以储存不同大小的数,或实现特殊的功能。具体如下:

  • 整型:char、short、int、long、long long、bool
  • 浮点型:float、double、long double

2.3 变量大小、功能

 不同位数的系统,变量大小可能不同。64位系统所占字节数如下表:

变量类型变量大小功能说明

char

1根据ASCII码表,将存储的值映射成字符
short2
int4存储一定范围的整数
long4
long long8
bool1只有一位,即只有0和1两个值
float4存储一定范围的浮点数
double8存储一定范围的浮点数
long double16

2.4 使用变量

2.4.1 变量声明

c++在使用变量之前,需要先对变量进行声明(数学中的“设……”),格式如下:

 type name;

int a;    //定义int型变量a
float b;  //定义float型变量b
char c;   //定义char型变量c

即先指出变量类型,然后写出变量名。

你也可以连续声明:

int a, b; //用,隔开

ps:这种声明是定义声明,也简称定义。另有引用声明,详见内存模型篇章。

2.4.2 变量赋值

使用 = 运算符,格式如下:

name = value;

a = 1;    //现在,a的值为1
b = 1.5;  //现在,b的值为1.5
c = 'A';  //现在,c的值为65,可映射为大写字母A

 也可直接在定义时赋值,俗称初始化

int a = 1;

2.5 限定符

在定义变量时使用限定符,将对变量产生对应的效果。

unsigned限定符:使整型变量只存储正整数。

const限定符:使变量被初始化后,值不可更改。

unsigned int a;
const float b = 1.5;
char const c = 'A';
  • 对于简单变量类型,const的位置不重要
  • 应在定义时,对const变量进行初始化(否则报错)

unsigned不再过多叙述,详见附录1.2.5

2.6 字面量

字面量,是出现在源代码中的量。人通过其与源代码进行交互。其中包括数字、前后缀、单引号(字符)、双引号(字符串),详见下表:

标记例意义
10、9、810进制数字
010、09、088进制数字,用前缀0标识
0x10、0x9、0X816进制数字,用前缀0x或0X标识
1.1、.22double类型的浮点数
1.1f、.22Ffloat类型的浮点数,用后缀f、F标识
1.1L、.22Llong double类型的浮点数,用后缀L标识
'a'、'b'、'\n'、'\0'单个字符,用单引号标识
L'a'、L'Z'单个宽字符,用前缀L标识
“hello”单个字符串,用双引号标识

ps:有关字符串的内容见数据类型篇章 

3 简单输入输出

我们提出的输入输出,是针对程序而言的。外界对程序输入, 程序对外界输出。你可以想象两个方块,左边的是外界,右边的是程序,便于后续理解。

3.1抽取、插入运算符

暂时不理会 >> 和 << 的名称,先看下述代码:

int x;
cin >> x;    //将输入的值赋给x
cout << x;   //将x的值输出

cin表示标准输入流(键盘),cout表示标准输出流(屏幕),这样就实现了程序与外界的交互。你也可以连续使用:

int x, y;
cin >> x >> y;
cout << x << y;

在此不再过多深入,详细请见c++ primer plus学习笔记(3)——结构语句、简单输入输出

3.2转义序列

转义序列使得程序能输出特定的内容,具体如下:

转义序列符描述含义
\n换行符移到下一行
\t水平制表符移动到下一水平制表位,相当于tab
\v垂直制表符移动到下一垂直制表位
\b退格符移回一个空格
\r回车符光标返回至当前行的开始处,用于套印
\f换页符发出一个换页指令
\a警报发出一个警报
\\反斜线插入一个反斜线字符
\?问号插入一个问号字符
\0空字符插入一个空字符,它被定义为具有数值0
\"插入双引号插入一个“
\'插入单引号插入一个‘
cout << '\\' << '\n' << '\\';    //这将在两行个打印一个\
cout << "\\\n\\";                //或者连成字符串

4 简单宏

宏是一种指令,根据指定规则替换文本。常用的有以下宏

4.1 #include

意即包含,将指定头文件导入源代码,格式如下:

#include <…>

#include "…"

这两种格式的区别是:尖括号表明程序应直接从指定路径(c++库)寻找头文件,双引号则从当前路径寻找头文件。例如:

cout 的声明就在 iostream 中,iostream 是c++库的头文件,包含了这个头文件才能使用cout。

4.2 #define

意即“定义”,将指定的文本替换为指定的字面量,是用来解放程序员的。格式如下:

#define before after

before是更改前的文本,after是更改后的文本,例:

#define PI 3.14
……
cout << PI;

在后续代码中,我们便可以使用PI这个标记。在编译前,这将被替换成3.14

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

c++ primer plus学习笔记(1)——基础知识 的相关文章

  • IDEA 2020.2 配置Tomcat服务器

    1 创建一个工程 2 右键项目名称 xff0c 选择 add framwork support 3 选中Web Application xff0c 默认勾选创建web xml 目录结构如下 4 点这两个地方中的任意一个 xff0c 添加配置
  • Java笔记之markdown语法

    狂神说Java系列视频笔记 本文章是作者学习B站系列视频 狂神说Java 的记录笔记与心得 xff0c 创作不易 xff0c 希望能够得到您的支持 1 Markdown的基本语法与使用 Markdown是当下一种较为流行的一种写作方法 通过
  • Java之数组专题

    文章目录 Java基础之数组专题数组的定义数组的声明与初始化数组元素的访问内存分析数组的使用For Each 循环数组作方法入参冒泡排序 多维数组稀疏数组 Java基础之数组专题 本文章是作者学习B站系列视频 狂神说Java 与经典书籍 J
  • Java封装详解

    Java类和对象 本文章是作者学习B站系列视频 狂神说Java 与经典书籍 Java核心技术 的记录笔记与心得 xff0c 创作不易 xff0c 希望能够得到您的支持 Java的构造器 Java的构造器 在用Java自定义类时 xff0c
  • C++ primer plus第七章习题中遇到的cin与cin.get问题

    cin gt gt 与cin get 是cpp程序常用到的输入函数 xff0c 近日在编写一道简单的习题时 xff0c 对二者产生了一些疑问 xff08 题目来源 C 43 43 primer plus 中文版习题第七章第六题 xff09
  • Leetcode部分经典链表题解析(涉及链表的反转、排序、合并、移除元素、成环、相交等操作)

    链表相关问题 第206题 反转链表 要求 xff1a 将给定链表进行反转操作 xff0c 第一个结点作为尾结点 xff0c 第二个结点指向第一个节点 xff0c 以此类推 xff0c 使得原链表的尾结点作为答案的头结点 思路一 xff1a
  • Linux报错:terminate called after throwing an instance of ‘std::regex_error‘ what(): regex_error

    文章目录 1 报错 xff1a 2 源码 3 原因 xff1a 4 解决办法 xff1a 5 运行成功 xff1a 1 报错 xff1a Linux中测试cpp httplib时出现报错std regex error xff0c 但源码中并
  • Redis学习笔记(狂神说)

    狂神视频地址 xff1a https www bilibili com video BV1S54y1R7SB Nosql概述 为什么要用Nosql 1 单机Mysql的年代 DAL xff1a 数据库访问层 在90年代 xff0c 一个基本
  • gazebo地图构建

    搭建地图环境是gazebo的基础功能 打开gazebo 可以在终端输入指令 打开的时候一定要有sudo xff0c 不然有可能在后面保存的时候出现画面卡住不动的情况 span class token operator span sudo g
  • Linux Ubuntu18.04安装微信

    最近做双系统 xff0c 在Ubuntu里下载微信时发现微信没有光网里没有开发Linux版本的微信 xff0c 找到了一些使用网页版登录微信的教程 xff0c 按着网上的教程做下来会的到一个如下的微信图标 打开扫描二维码后无法登录 可以在其
  • 虚拟机Ubuntu18.04 使用usb_cam调用笔记本摄像头

    虚拟机搭载Ubuntu18 04调用笔记本的摄像头 xff08 踩坑以及解决方法 xff09 一 建立工作空间 xff08 略 xff09 这里我建立的工作空间名称是catkin ones 二 下载usb cam包并进行编译 git clo
  • 关于UDP双向通信原理解释与范例

    注 本文不提供UDP通信的头文件 OK Let s do it 首先 我们需要了解什么叫做UDP xff0c 之前博主有些过TCP的通信范例 xff0c 我们可以了解到TCP的通信是一个稳定的 xff0c 可以进行双边通信的方式 同样附带上
  • windows10引导盘修复

    Windows修复引导项 前几天做双系统 xff0c 在使用Easybcd制作引导项时误删win10原本的引导项 xff0c 导致无法开机 xff0c 但是我可以通过磁盘直接启动linux 记录以下修复过程 在Linux里使用工具检查恢复
  • 局部路径规划:DWA算法

    一 概述 DWA算法是全称是Dynamic Window Approach 是在ROS中应用比较广泛的局部路径规划算法 主要作用是接受全局路径规划器生成的路径 xff0c 里程计信息 xff0c 地图信息等 xff0c 通过局部路径规划器将
  • ORB_SLAM2地图保存

    ORB SLAM2地图保存 在安装好orb slam2后按照教程中的方法做了地图构建的实验 xff0c 但是当地图达到想要的标准之后 xff0c 却发现没有办法保存地图 xff0c 查看ORB SLAM2源码发现在System h中有如下一
  • ros仿真小车

    ros仿真小车 补全前面博客中缺少的一些部分关于前面博客中的robotcar 本文也可单独食用 xff09 创建工作空间并初始化 span class token function mkdir span p catkin ws src sp
  • 【2023电赛备赛】msp430f5529学习笔记(一)

    写在前 本人目前是大二在读生 xff0c 第一次参加电赛 xff0c 准备不充分 xff0c 结果熬了四天 xff0c 最后成绩却不如人意 有51和32的基础 xff0c 然后想立一个flag系统的学习一下主打超低功耗的msp430f552
  • C语言经典题:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

    include lt stdio h gt 通过for循环将变量i j k的取值锁定在1 xff0c 2 xff0c 3 xff0c 4之间 int main int num 61 0 int i 61 0 j 61 0 k 61 0 fo
  • 单词逆序输出(c语言)

    int main int l j 61 0 int tmp 61 0 存储输入字符串的数组 char arr 100 61 34 i love beijing 34 用来存储输出字符串的数组 char arr2 100 输入字符串 gets
  • 进程虚拟地址空间

    关键词 xff1a 进程虚拟地址空间 xff0c 进程描述符 xff0c 页表 xff0c 分段式 xff0c 段页式 在进入正式的内容之前 xff0c 我们先了解一个重要的概念 进程描述符PCB 在Linux操作系统中 xff0c 描述进

随机推荐

  • 简单了解函数调用过程

    什么是栈帧 C C 43 43 程序的基本组成部分是函数 当程序在运行时 xff0c 每个函数每次调用都会在调用栈上维护一个独立的栈帧 xff0c 栈帧中维持着函数所需的各种信息 栈帧也叫过程活动记录 xff0c 是编译器用来实现过程 函数
  • 错题汇总1

    1 以下程序的运行结果是 xff08 xff09 int main void printf 34 s 5 3s n 34 34 computer 34 34 computer 34 return 0 A computer puter B c
  • 使用C/C++制作信息管理系统(demo)

    要求 xff1a 在windows环境下使用Vistual studio以C C 43 43 语言编译一个具有基础框架的客户信息管理系统 必须使用到封装 继承 map容器 SQL数据库技术 我 是 分 割 线 未经过UI处理的基础系统功能效
  • 错题汇总2

    1 下列程序的打印结果是 char p1 15 61 34 abcd 34 p2 61 34 ABCD 34 str 50 61 34 xyz 34 strcpy str 43 2 strcat p1 43 2 p2 43 1 printf
  • C++之继承初识(不包含虚拟继承)

    C 43 43 是一种面向对象的语言 xff0c 而面向对象 xff0c 有着三大特征 封装 xff0c 继承 xff0c 多态 关于封装 xff0c 在我的其它博客中已经有过简单的介绍了 这里我将简单叙述一下面向对象的三大特征之二 继承
  • C++之虚拟继承与继承的小总结

    本来是想将虚拟继承的部分写在上一篇的 xff0c 但是虚拟继承的分析实在有些复杂 xff0c 为了方便我自己回顾 xff0c 就干脆单写一篇吧 我们之前说过了 xff0c 虚拟继承可以解决菱形继承的二义性以及数据冗余的问题 xff0c 实际
  • C++之初识多态(Visual Studio 2019)

    此文章关于多态的代码全部是使用Visua Studio2019 x86 实现的 xff0c C 43 43 多态在不同编译器中的实现细节可能不同 xff0c 所以部分情况下相同代码运行结果可能不同 xff0c 在此声明 目录 多态的概念 多
  • C工程与寄存器封装(lv9-day13)

    文章目录 C工程与寄存器封装1 C语言工程简介2 启动文件3 C语言实现LED闪烁3 1 C语言与汇编分别是怎么操作寄存器的3 2 用C语言实现LED闪烁 4 寄存器的封装4 1 第一种封装方式 xff08 宏定义 xff09 4 2 第二
  • C++中auto的用法

    目录 1 auto初始化 1 1auto还可以与指针 xff0c 引用以及const进行组合 xff0c 但是在不同场景下会有相对应的推导规则 1 1 1指针和引用 1 1 2const 2 增强for循环 3 auto的限制 C 43 4
  • 自定义函数实现strcat函数功能

    strcat函数定义 字符串追加 连接函数 它的功能就是在一个字符串后面追加上另外一个字符串 char strcat char destination const char source 特点 xff08 与strcpy类似 xff09 x
  • STM32实现智能加湿

    开发前的准备需要如下的材料 xff1a 雾化模块1个 STM32F103开发板一个 风扇驱动模块1个 xff08 可用继电器代替 xff09 我们采用的继电器是低电平触发的所以我们在使用的时候只用给它一个低电平的信号就可以控制它了 USB转
  • Qt项目实战:愤怒的小鸟(联机版)

    前言 本文章会详细介绍难点的内容 xff0c 不附带全部源码 xff0c 会将关键代码进行展示 因为只有截图 xff0c 这里在每一个动作和界面都添加了音效与BGM 同时附加了CG展示 素材和音效全部放在下面了 xff0c 需要可自行提取
  • Ubuntu中安装openCV时Cmake问题解决

    1 执行Cmake的语句指令 sudo cmake D CMAKE BUILD TYPE 61 Release D CMAKE INSTALL PREFIX 61 usr local 2 当执行完上述指令后遇见以下问题解决策略 问题1 xf
  • 使用 RGB-D 相机(Astra)实现 YOLO v3 实时目标检测

    设备和环境 xff1a 奥比中光RGB D相机 xff08 Astra xff09 xff1b Ubuntu16 04 首先 xff0c 先将自己的RGB D相机的环境与依赖构建好 xff0c 然后进行以下步骤构建darknet ros 1
  • Arduion应用U8g2库实现字符滚动效果

    由于U8g2库中没有可以位移的函数 xff0c 所以简单编写了一个可以实现字符滚动的代码 主要是为了记录一下自己学习Arduion的过程 算是一个记事本吧 xff01 当然如果你对于这方面有所需求 xff0c 可以拿去使用 主要是利用显示器
  • C语言老鼠走迷宫(单路径)算法详细讲解

    最近在学习C语言的一些经典算法 xff0c 其中遇到了一点困难 xff0c 导致卡进度了 琢磨了很久 xff0c 在绘制流程图时 xff0c 突然灵感大开理解了 xff0c 老鼠走迷宫算法的奇妙 所以写了这个 xff0c 一来是方便以后右和
  • 关于二分搜索法条件判断的研究

    最近在写二分搜索法时 xff0c 发现了几个现象 xff0c 在不同的条件设定之下 xff0c 系统会出现几种bug xff1a 1 当搜索的值 lt 最小值 时系统都会一直在循环内执行 2 当搜索的值 gt 最大值 时系统都会一直在循环内
  • C++ 库函数<string>示例

    最近在学C 43 43 自己整理了一部分C 43 43 库函数 lt string gt 的一些 函数 主要都是C 43 43 的 想到以后可能会用到 所以打算记录一下 方便自己也方便了大家 在啃这些函数的时候有很多借鉴之处 xff0c 在
  • 两台电脑间的串口通信

    目录 一 准备工作 二 实验过程 三 实验结果 一 准备工作 1 两台笔记本电脑 2 2个usb转串口模块 3 杜邦线若干 4 秒表 二 实验过程 两个串口线分别连接两台电脑 连线方式 xff1a 3V3 3V3 xff0c GND GND
  • c++ primer plus学习笔记(1)——基础知识

    本人还有一星期要开始期末考试了 xff0c 复习c 43 43 时顺便挖个坑 xff0c 之后会详细更新 目录 1 初识源代码 1 1 c 43 43 程序的产生 1 2 代码例 1 3 标记 空白 2 简单数据类型 2 1 变量名 2 2