《C++ primer》 anki学习卡片txt输出101张,更新至第2章,截止2023年12月6日

2023-12-06 23:20

本文主要是介绍《C++ primer》 anki学习卡片txt输出101张,更新至第2章,截止2023年12月6日,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

C++程序中{{c1::}}要有main函数 一定 不一定
一个函数定义包含哪几个部分 返回类型 函数名(形参列表) { 函数体 }
main函数返回值为0时,表示{{c1::}} 成功 失败
无论你使用命令行页面或者IDE,大多数编译器都要求程序源码存储在一个或者多个文件中。 这个程序文件通常被称为: 源文件
命令行界面中,语句 $ CC prog1.cc 中的CC表示什么 编译器程序的名字
命令行界面中,语句 $ CC prog1.cc 中的$是什么 命令提示符
Unix系统编译器中可执行文件后缀为 .out
标准库的4个IO对象 cin 标准输入 cout 标准输出 cerr 标准错误 clog
clog的作用 IO标准库 用来暑促纯刚需运行时的一般性信息
cerr的作用 IO标准库 用来输出警告和错误消息
C++中两种注释的写法 //双斜线单行注释 /* * *多行注释 */
“#include < > 和 #include”" “” 的区别是什么" “#include < > 里面放的是来自标准库的头文件 #include”" “” 里面放的是不属于标准库的头文件"
成员函数的概念 被一个类所包含的函数
“方法”是什么 成员函数
024表示多少进制 8进制
16进制数开头用什么表示 0x或0X
字面值常量是什么 “在C/C++中,4、3.1415926、0x24、”“BEIJING”“等等,都称为字面值常量。 称之为字面值是因为只能用它的值来称呼它, 称为为常量是因为它的值不能被修改。”
十进制字面值{{c1::}}会为负数 不可能 可能
字符串与数组的关系 字符串实际上是由常量字符组成的数组
字符串字面值的实际长度 与 内容上的长度 的关系 实际长度要比内容多1,因为每个字符串末尾都被添加了一个空字符’\0’
“”“A”“表示{{c1::字符串}}(字符/字符串),'A’表示{{c1::字符}}(字符/字符串)”
“字符串”“A”“与字符’A’长度上的区别” “字符串”“A”“由两个字符组成,一个是’A’另一个是空字符。 而字符’A’仅有一个字符组成。”
输出时,分多行书写的字符串字面值,该怎么写 “std::cout << ““a really, really long string literal “” ““that spans two lines”” << std::endl;”
literal(翻译) 字面值
转义序列: 换行符 \n 反斜线\ 单引号’ 这种在程序中在程序中被当成{{c1::}}字符 一个 两个
转义序列以{{c1::}}开头 \ / 如\n
换行符 的转义序列写法 \n 是一个转义序列,它表示什么
泛化的转义序列从写法上有哪两种形式 一种是以\x开头,后接16进制数 一种是以\开头,后接8进制数
简述泛化的转义序列输出为字符的逻辑 泛化的转移字符有两种类型, 一是以\x开头的,后面跟的数字为16进制数, 二是以\开头的,后面跟的数字为8进制数, 把对应进制的数进行计算后得到的ASII码编号对应的字符 即为输出的字符
泛化的转义序列后面跟的数字能有多少个 \只与后面数字中的前三个构成转义序列 \x与后面全部数字构成转移序列
Unicode字符集是什么 用于表示所有自然语言中字符的标准
“诸如 L’a’ u8"“hi!”” 42ULL 1E-3F 3.14159L 这样的表示什么意思” 通过添加前缀和后缀, 可以改变整型、 浮点型和字符型字面值的默认类型。 //宽宇符型字面值, 类型是wchar_t //utf-8字符串字面值(utf-8用8位编码一 个Unicode字符) //无符号整型字面值, 类型是unsigned long long //单精度浮点型宇面值, 类型是float //扩展精度浮点型字面值, 类型是long double
变量定义的基本形式是什么 “首先是类型说明符(type specitier), 随后紧跟由一个或多个变量名组成的列表, 其中变量名以逗号分隔, 最后以分号结束。 例如: int sum = 0, value, // sum、value和units_sold都是int units_sold = O; // sum和units_sold初值为0 Sales_item item; // item的类型是Sales_item (参见1.5.1节, 第17页) // string是一种库类型, 表示一个可变长的字符序列 std: :string book(”“0-201-78345-X””) ;//book通过一个string字面值初始化"
对象的含义 一块能存储数据并具有某种类型的内存空间
初始化的含义 对象在创建时获得了一个特定的值 的这个过程
在同一条定义语句(一个分号内)中, {{c1::}}用先定义的变量值去初始化后定义的其他变量。 可以 不可以
初始化是一种赋值操作{{c1::}} 错 对 初始化与赋值是两个完全不同的操作。
列表初始化的含义 形如int units_sold{0}; 使用花括号进行的初始化 这是C++11新标准
列表初始化如果初始值存在信息丢失的风险,则编译器{{c1::}}报错 会 不会
默认初始化的含义 如果定义变量没有指定初值,则变量被默认初始化。此时变量被赋予了默认值。
因为是可以被编译通过的,所以没有必要初始化每个内置类型的变量{{c1::}} 错 对 未初始化的变昼含有一个不确定的值,使用未初始化变量的值是一种错误的编程行 为并且很难调试。 尽管大多数编译器都能对一部分使用未初始化变量的行为提出警告, 但严格来说, 编译器并未被要求检查此类错误。 使用未初始化的变量将带来无法预计的后果。
分离式编译的含义 允许将程序分割为若干个文件,每个文件可被独立编译。
想申明而非定义一个变量,可以在变量名前添加哪一个关键字 extern
extern int i; //{{c1::申明}}(申明还是定义) int j; //{{c1::定义}}(申明还是定义) extern double pi = 3.1416; //{{c1::定义}}(申明还是定义)
在同一个程序中,定义的次数可以有{{c1::1(有且仅有)}}次,声明的次数可以有{{c1::0 - n}}次
标识符是什么 组成名字的字符序列
C++语言大多数作用域用什么符号分隔 花括号{ }
main函数的返回类型必须为int{{c1::}} 对 错 在C++ primer 1.1节中是这样的。
引用的基本写法 int a=1024; int b=&a; //b指向a,b是a的另一个名字
引用{{c1::}}需要初始化 一定 不一定
引用{{c1::}}一个对象 不是 是 它只是一个已经存在的对象的另外一个名字
{{c1::}}定义引用的引用 不能 能 因为引用本身不是一个对象
可以对某个字面值进行引用{{c1::}} 错 对 引用只能绑定在对象上,而不能与字面值绑定在一起。
double dval = 3.14; int &refValS = dval; 是否合法,原因为何 非法,引用的类型都要和与之绑定的对象严格匹配。 这里一个是int一个是double 指针也需要类型匹配。
指针{{c1::是}}(是/不是)一个对象, 引用{{c1::不是}}(是/不是)一个对象
指针和引用都不一定需要在定义时赋值{{c1::}} 错 对 指针不一定需要在定义时赋值,引用一定要在定义时赋值
引用和指针一样,可以通过语句让引用引用到一个新的对象上{{c1::}} 错 对 在指针的生命周期中可以先后指向几个不同的对象, 但是对于引用而言,它不是一个对象,与被引用的对象是绑定的关系, 因此不能重新引用到新的对象上去。
int *ip1, *ip2; double dp, dp2; 定义的这四个对象分别表示什么 ip1和ip2都是指向int型对象的指针 dp2是指向double型对象的指针,dp是double型对象
可以定义指向引用的指针{{c1::}} 错 对 因为指针不是对象,没有地址,所以不能定义指向引用的指针。
double dval; double pd = &dval; double pd2 = pd; 下划线部分只能填double{{c1::}} 对 错 dval是一个类型为double的对象, pd是初始值是 double型对象的地址 pd2是初始值是 指向double 对象的指针
指针的值可以有哪四种状态 1.指向一个对象。 2. 指向紧邻对象所占空间的下一个位置。 3. 空指针, 意味着指针没有指向任何对象。 (有效状态) 4. 无效指针, 也就是上述情况之外的其他值。 第2/3种有效,但是操作受限,因为没有指向具体对象,所以试图访问此类指针(假定的)对象的行为不被允许。
因为编译器不会报错,所以可以拷贝和访问无效指针。{{c1::}} 错 对 虽然编译器不会报错,但是会引发错误。
编译器{{c1::}}检查无效指针。 不会 会
操作符
叫什么 解引用符 怎么写
解引用符
的作用 对指针指向的对象进行操作, 例如
p是对指针p所指向的对象进行操作
nullptr是一个字面值{{c1::}} 对 错 nullptr是一个特殊类型的字面值,它可以被转换为其他任意指针类型。 这是C++11新引入的方法
直接使用语句int *p3 = NULL;程序会报错的原因是什么 缺少头文件# include cstdlib
生成空指针使用语句 int *p2 = 0;{{c1::}} 正确 错误
语句int *p3 = NULL中的NULL是一个预处理变量{{c1::}} 对 错
语句 int p2 = 0是错误的,因为无法把0赋给p2{{c1::}} 错 对 这里是初始化了指针p2,并对其置空指针。
int ival=0; int *pi=0;//{{c1::初始化指针pi,并对指针置空指针}} pi=&ival;//{{c2::将指针pi赋为ival的地址,现在pi指向了ival}} 两句话分别进行了什么操作
int ival=1; int *pi=0; pi=&ival; pi=0;//这一步中{{c1::}}的值被改变 ival pi
两个指针如果相等,可能有哪几种可能性 1、它们都为空、 2、都指向同一个对象 3、都指向了同一个对象的下一地址。 (三种合法的指针)
指针只要是有效的,那一定指向了一个对象{{c1::}} 错 对 指针有四种状态: 1、指向一个对象 2、指向紧邻对象所占空间的下一个位置 3、空指针 4、无效指针 其中前三种为有效状态,但是第2、3种情况指针是没有指向一个对象的。
指针可以指向紧邻对象所占空间的下一个位置,所以可以访问和操作此位置的对象{{c1::}} 错 对 虽然这是有效指针,但是使用受到限制,所以试图访问的行为不被允许。
对于合法指针{{c1::}}用相等操作符()来判断是否相等 可以 不可以
对于所有的指针,都能使用相等操作符(
)来判断是否相等{{c1::}} 错 对 非法指针不能
int ival = 1024; int pi = 0; //pi为空指针 int pi2 = &ival; //将指针pi2指向ival if (pi) //空指针 判断值为{{c1::false}}(true or false?) … if (pi2) //指向某个对象的指针 判断值为{{c1::true}}(true or false?{) …
指针和引用有哪些区别 1、指针本身就是一个对象 2、指针的生命周期中可以先后指向几个不同的对象 3、指针无须在定义时赋初值
复合类型的概念 基于其他类型定义的类型。 例如引用和指针
在语句 int
p1,p2;中,p1和p2分别是什么 pl是指向int的指针 p2是int
对于语句 int
p; 基本数据类型是{{c1::}} int int
int是基本数据类型,只是用来修饰int的
int
b;是{{c1::}}的写法 合法 非法
解引用的概念 解引用是关于指针的概念,对指针进行解引用操作会获得指针所指的对象。
** 和 ***表示什么 指针 指向指针的指针 指向指针的指针的指针
int ival = 1024; int *pi= &ival //pi指向一个int型的数 {{c1::int **ppi = π}} //ppi指向一个int型的指针
是否存在对指针的引用 和 对引用的指针 存在 对指针的引用 不存在 对引用的指针 因为指针是一个对象,而引用不是
int *p; //p是一个int型指针 {{c1::int *&r = p;}}//r是一个对指针p的引用
int i = 42; int *p; //p是一个int型指针 int *&r = p; //r是一个对指针p的引用 r = &i; 问对象p里存放的是什么 最后一句r引用了一个指针,因此给r赋值&i就是令p指向i 存放的是i的地址
int i = 42; int *p; //p是一个int型指针 int *&r = p; //r是一个对指针p的引用 r = &i; //r引用了一个指针,因此给r赋值&i就是令p指向i *r=0; 最后一步哪个对象的值被改变了{{c1::}} i p r 解引用r得到i,也就是 p指向的对象,将i的值改为0 上面选项中r连对象都不是。
const int bufSize=512; bufSize=1024; 程序报错的原因是什么 加关键词const的变量成为一个常量,是不能被修改的, 任何对其的赋值行为都会报错。
const对象可以被默认初始化{{c1::}} 错 对 const对象一开始就必须分配一个值进行初始化。
对const对象的初始化是否正确{{c1::}} int i = 42; const int ci = i; 正确 错误 const类型的对象主要限制在于不能改变其内容。
const对象的作用范围是什么 整个文件内 注意不是整个程序内
对于const对象,编译器会进行什么操作 将在编译过程中把用到该变量的地方都替换成对应的值。 例如对于语句 const int bufSize = 512; 编译器会找到代码中所有用到 bufSize的地方,然后用512替换。
可以在多个文件里设置同名的const对象吗{{c1::}} 可以 不可以 每个文件的const对象仅对本文件有效
如何通过一个语句让const变量在同一个程序的多个文件中同时使用 对const变量不管是声明还是定义都添加extern关键字
因为在.cc文件中进行了对const对象的定义 extern const int bufSize =fen(); 这里使用了extern关键字,因此不需要在其他的文件,诸如.h文件中添加声明{{c1::}} 错 对 需要在其他的文件,诸如.h文件中添加申明 extern const int bufSize;

这篇关于《C++ primer》 anki学习卡片txt输出101张,更新至第2章,截止2023年12月6日的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/463725

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

【C++ Primer Plus习题】13.4

大家好,这里是国中之林! ❥前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。有兴趣的可以点点进去看看← 问题: 解答: main.cpp #include <iostream>#include "port.h"int main() {Port p1;Port p2("Abc", "Bcc", 30);std::cout <<

C++包装器

包装器 在 C++ 中,“包装器”通常指的是一种设计模式或编程技巧,用于封装其他代码或对象,使其更易于使用、管理或扩展。包装器的概念在编程中非常普遍,可以用于函数、类、库等多个方面。下面是几个常见的 “包装器” 类型: 1. 函数包装器 函数包装器用于封装一个或多个函数,使其接口更统一或更便于调用。例如,std::function 是一个通用的函数包装器,它可以存储任意可调用对象(函数、函数

poj3468(线段树成段更新模板题)

题意:包括两个操作:1、将[a.b]上的数字加上v;2、查询区间[a,b]上的和 下面的介绍是下解题思路: 首先介绍  lazy-tag思想:用一个变量记录每一个线段树节点的变化值,当这部分线段的一致性被破坏我们就将这个变化值传递给子区间,大大增加了线段树的效率。 比如现在需要对[a,b]区间值进行加c操作,那么就从根节点[1,n]开始调用update函数进行操作,如果刚好执行到一个子节点,

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

hdu1689(线段树成段更新)

两种操作:1、set区间[a,b]上数字为v;2、查询[ 1 , n ]上的sum 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#include<queue>#include<set>#include<map>#include<stdio.h>#include<stdl

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�