
C/C++
文章平均质量分 59
C++ primer学习笔记
ClimberCoding
基础不牢,地动山摇…
展开
-
C语言运算符优先级
C语言运算符优先级(共15级) 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 () 圆括号 (表达式)/函数名(形参表) . 成员选择(对象) 对象.成员名 -> 成员选择(指针) 对象指针->成员名 2 - 负号运算符 -表达式 右到左 单目运算符 (类型) 强制类型转换 (数据类原创 2021-09-12 14:33:07 · 113 阅读 · 0 评论 -
【自用】C++ STL
原学习链接:https://blog.youkuaiyun.com/acceptedday/article/details/118529280C++ STLC++的面向对象和泛型编程思想,目的就是复用性的提升大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作。为了建立数据结构和算法的一套标准,诞生了STL基本概念STL(Standard Template Library,标准模板库)STL 从广义上分为: 容器(container) 算法(algorithm) 迭代器(iterator)原创 2021-07-23 18:31:56 · 146 阅读 · 0 评论 -
(转)认真学完C++primer是否有能力写个小游戏?
转自:https://www.zhihu.com/question/67790218/answer/256837102题主的问题可以改成:认真打上《英雄联盟》钻石1级是否有能力打穿《黑暗之魂》?开个玩笑 ,比喻不太准确,但是道理是差不多的。关于编程学习方法的误区很大,很多人都有类似的问题。1、C++ Primer更像一本字典《C++Primer》一共有745页,比一本小字典厚多了,题主不会望而生畏吗?只是看书的话,虽然前面可能进展比较顺利,相信过不了1/3你就越看越蒙。到后面知识密度很高,啃起来相当困难。转载 2021-07-12 00:38:51 · 208 阅读 · 0 评论 -
如何正确使用 C++ Primer
转自:http://www.zhihu.com/question/32087709个人经验,C++ primer 第一次可以跳着看。关键是要尽快用起来,在使用中熟练,而不是在细节中迷失。以C++ Primer第五版为例,第一遍读的时候:Part1也就是前七章,除了6.6,6.7节,都要通读。尤其是第三章初步介绍了vector和string,简直就是新手福音,搞定这两个容器就能写一些简单的程序。Part2基本就是数据结构和算法,如果有基础读起来很轻松。9,11两章介绍的容器,以及12.1节的智能指针要转载 2021-07-10 22:18:47 · 872 阅读 · 0 评论 -
register变量
学习链接register变量一般情况下,变量的值是存储在内存中的,CPU 每次使用数据都要从内存中读取。如果有一些变量使用非常频繁,从内存中读取就会消耗很多时间,例如 for 循环中的增量控制:int i;for(i=0; i<1000; i++){ // Some Code}执行这段代码,CPU 为了获得 i,会读取 1000 次内存。为了解决这个问题,可以将使用频繁的变量放在CPU的通用寄存器中,这样使用该变量时就不必访问内存,直接从寄存器中读取,大大提高程序的运行效率。原创 2021-10-22 09:30:40 · 1095 阅读 · 0 评论 -
main 函数中的变量是全局变量还是局部变量?
main 函数内的变量不是全局变量,而是局部变量,只不过它的生命周期和全局变量一样长全局变量一定是定义在函数外部的原创 2021-10-16 12:36:54 · 4509 阅读 · 0 评论 -
C语言变量在内存中如何存放
链接:https://blog.51cto.com/u_15132389/2725797原创 2021-10-16 12:33:36 · 180 阅读 · 0 评论 -
ASCII、Unicode、GBK和UTF-8字符编码的区别联系
转自另外,再去参考:https://blog.youkuaiyun.com/liugec/article/details/76400793?spm=1001.2014.3001.5502ASCII、Unicode、GBK和UTF-8字符编码的区别联系很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物。他们看到8个开关状态是好的,于是他们把这称为“字节”。 再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去。他们看到这样转载 2021-10-15 00:59:06 · 144 阅读 · 0 评论 -
C++ 程序的内存分区
转自C++ 程序的内存分区代码区 程序被操作系统加载到内存时,所有可执行的代码被加载到代码区,也叫代码段,存储程序的代码指令。程序运行时,这段区域数据不可被修改只可以被执行。静态区 程序中的静态变量、全局变量存放在此区域(初始化的全局变量和静态变量在一块区域)。代码执行期间一直占用内存!堆 堆是不连续的内存区域,获得的空间比较灵活,也比较大,一般速度比较慢,而且容易产生内存碎片,不过用起来最方便。需要程序员申请的内存空间,空间的释放一般由程序员控制(比如new, delet转载 2021-10-12 23:17:49 · 133 阅读 · 0 评论 -
记录 加深理解数组中的 * 和 &
加深理解数组中的 * 和 &题目:测试B、C选项:#include <iostream>using namespace std;int main() { int a[3][4] = { 0 }; cout << "a[1] : "<< a[1] << endl; cout << "&a[1] : " << &a[1] << endl; cout <原创 2021-10-07 19:23:42 · 146 阅读 · 0 评论 -
strdup 和 strcpy
strdup 和 strcpystrdup原型:extern char *strdup(char *s);用法:#include <string.h>功能:复制字符串s说明:返回指向被复制的字符串的指针,所需空间由malloc()分配且可以由free()释放。strcpy原型:extern char *strcpy(char *dest,char *src);用法:#include <string.h>功能:把src所指由NULL结束的字符串复制到dest所指的数原创 2021-09-27 00:57:16 · 228 阅读 · 0 评论 -
C++中给栈/队列中能否加入空指针
这里用双向队列来测试:#include <iostream>#include <deque>using namespace std;int main() { deque<int*> q; int a = 1, b = 2; int* aa = &a, *bb = &b; q.push_back(aa); q.push_back(nullptr); q.push_back(bb); fo原创 2021-09-26 23:46:40 · 931 阅读 · 0 评论 -
STL中vector的assign()函数
STL中vector的assign()函数assign函数原型:void assign(const_iterator first,const_iterator last);void assign(size_type n,const T& x = T());功能:将区间 [first,last) 的元素赋值到当前的 vector 容器中,或者赋 n 个值为 x 的元素到 vector 容器中,并且清除掉 vector 容器中以前的内容。示例:#include <vector>原创 2021-09-12 14:09:40 · 2132 阅读 · 0 评论 -
C++ STL 中distance() 函数用法
C++ STL 中distance() 函数用法对于作用与同一容器的两个同类型迭代器可以有效指定一个区间范围,要想获取该指定范围内包含元素的个数,就需要借助distance()函数。template<class InputIterator> typename iterator_traits<InputIterator>::difference_type distance(InputIterator first, InputIterator last);其中,first 和 l原创 2021-09-09 22:36:38 · 1819 阅读 · 0 评论 -
typedef , enum , typedef enum
typedef , enum , typedef enum1. typedeftypedef是用来声明新的类型名来代替已有的类型名。如:typedef int age; 表示age x; 和 int x;语句相同2. enumenum是枚举类型,用来定义一系列宏定义常量区别用,相当于一系列的#define xx xx,当然它后面的标识符也可当作一个类型标识符。enum可以让数据更简洁、更易读。如:#define MON 1#define TUE 2#define WED 3#de原创 2021-08-20 21:04:37 · 1223 阅读 · 1 评论 -
winmm.lib库
winmm.lib库用来对windows录音设备采集录音数据#include <mmsystem.h>#pragma comment(lib, “winmm.lib”)/* #pragma 是一条编译器指令,是给告诉编译器你要链接一些东西,然后在后面的comment里面指明是什么东西 */链接:https://blog.youkuaiyun.com/lifei092/article/details/81355384...原创 2021-08-20 14:13:27 · 11165 阅读 · 0 评论 -
Unable to start debugging. Unexpected GDB output from command “-environment -cd xxx“ No such file or
记录,转自:https://blog.youkuaiyun.com/weixin_43280025/article/details/102536941代码已经可以运行成功 但是调试会报错 最后发现是因为路径中有中文转载 2021-08-19 12:54:31 · 827 阅读 · 0 评论 -
VC编程--玩转控件(Windows编程简介)
留作自用,转自:https://www.cctry.com/thread-297374-1-1.html0、开发环境:操作系统:Microsoft Windows 7 Ultimate Sp1 x64编译工具:Microsoft Visual Studio 2013 Professional 中文版(其实 VS2010、VS2012、VS2013、VS2015、VS2017 都可以的,操作基本相同)1、简介:之前VC驿站给大家推出了《实用C++》的新手入门教程,可以说把我们平时针对C++语言经常用转载 2021-08-19 10:28:02 · 1067 阅读 · 0 评论 -
C++多态——虚函数virtual入门
C++多态——虚函数virtual入门首先要知道C++多态是通过虚函数来实现的,虚函数允许子类重新定义成员函数,而子类重新定义父类的做法称为覆盖(或称为重写)。虚函数虚就虚在在所谓“推迟联编”或者“动态联编”上,一个类函数的调用并不是在编译时刻被确定的,而是在运行时刻被确定的。由于编写代码的时候并不能确定被调用的是基类的函数还是哪个派生类的函数,所以被成为“虚”函数。虚函数的定义是在基类中进行的,它是在基类中需要定义为虚函数的成员函数的声明中冠以关键字virtual,从而提供一种接口界面。另外,虚函原创 2021-07-29 15:36:08 · 200 阅读 · 0 评论 -
【自用】C++模板注意事项
C++模板模板其实就是建立通用的模具,大大提高代码的复用性。C++提供两种模板机制:函数模板和类模板1. 函数模板语法:template<typename T>函数声明或定义解释:template — 声明创建模板typename — 表面其后面的符号是一种数据类型,可以用class代替T — 通用的数据类型,名称可以替换,通常为大写字母注意:使用函数模板有两种方式:自动类型推导、显示指定类型自动类型推导,必须推导出一致的数据类型T,才可以使用模板必须要确定出T的原创 2021-07-23 11:05:39 · 166 阅读 · 0 评论 -
C++随机函数rand()和srand()
转自:https://blog.youkuaiyun.com/candyliuxj/article/details/4396666 一、rand() 函数名: rand 功 能: 随机数发生器 用 法: in转载 2021-07-22 10:21:42 · 1176 阅读 · 0 评论 -
如何阅读C++源代码
转自:http://blog.163.com/fan_jiangfeng/blog/static/98698782201185822872/ 1.阅读源代码对于程序员来说是提高技术实力和业务知识最好的方法,那么我们怎样阅读源代码就是我们 首先要解决的问题。 阅读源代码就像管理一家大的公司,关键在于管理者卓越的领导意识。作为阅读源代码的人也应该有良好的意识,在阅读源代码时才能事半功倍。养成良好的阅读...转载 2021-07-15 23:16:54 · 6042 阅读 · 0 评论 -
C++ 中hpp和cpp区别
转自:https://www.cnblogs.com/ymjyqsx/p/7806323.html 首先,我们可以将所有东西都放在一个.cpp文件内,编译器会将这个.cpp编译成.obj,即编译单元。一个程序可以由一个编译单元组成,也可以由多个编译单元组成。一个.cpp对应一个.obj,然后将所有的.obj链接起来(通过一个叫链接器的程序),组成一个.exe,即程序。如果一个.cpp要用到另一个.cpp定义的函数怎么办,只需在这个.cpp中写上它的函数声明。 链接器将所有的obj链接转载 2021-07-14 17:28:45 · 3477 阅读 · 0 评论 -
【C++】multiset用法
转自:https://blog.youkuaiyun.com/sodacoco/article/details/84798621 c++语言中,multiset是<set>库中一个非常有用的类型,它可以看成一个序列,插入一个数,删除一个数都能够在O(logn)的时间内完成,而且他能时刻保证序列中的数是有序的,而且序列中可以存在重复的数。 简单应用: 通过一个转载 2021-07-07 15:17:55 · 6752 阅读 · 0 评论 -
C/C++中 for循环后面加(分号 || 大括号)区别
结论:无区别代码测试:#include <iostream>int main() { int i = 0; for (; i < 10; i++); std::cout << i << std::endl; int j = 0; for (; j < 10; j++) {} std::cout << j << std::endl; return 0;}...原创 2021-05-29 16:35:15 · 1568 阅读 · 0 评论 -
vector 操作
转自:https://blog.youkuaiyun.com/weixin_41743247/article/details/906359311. vector1.1 vector 说明vector是向量类型,可以容纳许多类型的数据,因此也被称为容器(可以理解为动态数组,是封装好了的类)进行vector操作前应添加头文件#include <vector>1.2 vector 初始化方式1.//定义具有10个整型元素的向量(尖括号为元素类型名,它可以是任何合法的数据类型),不具有初值,其值转载 2021-05-26 17:10:20 · 140 阅读 · 0 评论 -
C语言计算程序段执行时间
直接看代码套模板:#include <stdio.h>#include <time.h>#include <stdlib.h>int main() { clock_t begin, end; double time_cost; // 开始记录 begin = clock(); /*这里输入待测试程序段*/ // 结束记录 end = clock(); time_cost = (double)(原创 2021-05-25 15:42:05 · 188 阅读 · 0 评论 -
区分 %d, %ld, %lld, %lf, %f 等
区分 %d, %ld, %lld, %lf, %f 等%d:用于 int%ld:用于 long%lld:用于 longlong输入时:float 输入用 %fdouble 输入用 %lf输出时:float, double都用 %f 输出就行了(不太清楚是什么环境下,double 用 %lf 会出错)原创 2021-05-25 15:40:30 · 11930 阅读 · 0 评论 -
区分const pointer 和 pointer to const
首先不管如何命名,它们所表达的含义是不变的:int const *p; // *p 是常量,不能改变;但是p可以改变int * const p; // p 是常量,不能改变;但是*p可以改变下面是C++ primer P56页有提到的内容:“指向常量的指针-pointer to const” (其实就是 指针常量)不能用于改变其所指对象的值(即*p不能改变)。-----对应上面的int const *p“常量指针-const pointer”必须初始化,而且一旦初始化完成,则他的值(也就是存放原创 2021-05-23 09:33:39 · 391 阅读 · 0 评论 -
关于typedef struct 和 struct定义结构体的区别
事实上,这个东西是从C语言中遗留过来的,typedef可以定义新的复合类型或给现有类型起一个别名,在C语言中,如果你使用了struct xxx{}; 的方法,后面使用时就必须用 struct xxx 变量 来声明变量,而使用typedef struct xxx{}XXXXX;的方法 就可以写为 XXXXX 变量来声明变量了。不过在C++中已经没有这回事了,无论你用哪一种写法都可以使用第二种方式声明变量,这个应该算是C语言的糟粕。...原创 2021-05-22 16:01:15 · 108 阅读 · 0 评论 -
彻底搞懂C指针-大白话笔记
《彻底搞懂C指针》大白话笔记关于到底谁是指针常量 、谁是常量指针,网上各种解释,我参考了《C++ primer》、《C和指针》等经典书籍。总结如下:int const * a :a是指针常量(指向常量的指针)! 指针指向地址的值是不变的。int * const b :b是常量指针! 指针指向的地址是不变的,但是他的内容可变。巧记:是指针常量还是常量指针,从右往左读! const关键字后面的是不可修改的。如:int i = 10; int *const j = &i; // j 在原创 2021-05-19 23:04:11 · 361 阅读 · 0 评论 -
C++ primer第五章学习笔记
第五章 语句通常情况下,语句是顺序执行的,但除非是最简单的程序,否则仅有顺序执行远远不够。因此, C++语言提供了一组 控制流(flow-of-control) 语句以支持更复杂的执行路径。5.1 简单语句C++语言中的大多数语句都以分号结束,一个表达式,末尾加上 ; 就变成了 表达式语句(expression statement)。表达式语句的作用是执行表达式并丢弃求值结果。ival + 5; // 一条没什么实际用处的表达式语句cout << ival; // 一条有用的表达原创 2021-01-24 00:37:47 · 271 阅读 · 0 评论 -
C++ primer 第四章学习笔记
第四章 表达式表达式由一个或多个 运算对象(operand) 组成,对表达式求值将得到一个 结果(result)。字面值和变量是最简单的 表达式(expression),其结果就是字面值和变量的值。把一个 运算符(operator) 和一个或多个运算对象组合起来可以生成较复杂的表达式。4.1 基础4.1.1 基本概念C++定义了 一元运算符(unary operator) 和 二元运算符(binary operator)。作用于一个运算对象的运算符是二元运算符,如取 地址符( & ) 和原创 2021-01-23 14:51:03 · 520 阅读 · 0 评论 -
C++ primer 第三章学习笔记(持续更新)
第三章 字符串、向量和数组第二章介绍的内置类型是由C++语言直接定义的。这些类型体现了大多数计算机硬件本身具备的能力。标准库定义了另外一组具有更高级性质的类型,他们尚未直接实现到计算机硬件中。本章介绍两种最重要的标准库类型。string和vector。string表示可变长的字符序列,vector存放的是某种给定类型对象的可变长序列。本章还介绍内置数组类型,和其他内置类型一样,数组的实现与硬件密切相关。因此相比较标准库类型string和vector,数组在灵活性上稍显不足。3.1 命名空间的using原创 2021-01-21 23:50:06 · 677 阅读 · 0 评论 -
C++ primer 第二章学习笔记(持续更新)
第二章 变量和基本类型 数据类型是程序的基础:它告诉我们数据的意义以及我们能在数据上执行的操作 C++语言定义了几种基本内置类型(如字符,整型,浮点数等),同时也提供了自定义数据类型的机制。基于此,C++标准库定义了一些更加复杂的数据类型,比如可边长字符串和向量等。2.1 基本内置类型 C++ 定义了一组包括 整数、浮点数、单个字符 和 布尔值 的算术类型,另外还定义了一种称为 void 的空类型(空类型不对应具体的值,仅用于一些特殊场合,如:当函数不返回任何值时使用空类型作为返回类型)。2原创 2021-01-18 23:32:40 · 344 阅读 · 0 评论 -
C++ primer第一章学习笔记(持续更新)
第一章 开始1.1 编写一个简单的C++程序 每个C++程序都包含一个或多个函数,其中有一个必须是main函数。//最简单的main函数int main(){ return 0;} 一个函数的定义包括四部分:返回类型函数名形参列表函数体注意:main函数的返回类型必须是 int 型(int类型是一种内置类型,即语言自身定义的类型)。当return语句包含一个值时,此返回值的类型必须与函数的返回类型相容。在大多数系统中,main的返回值被用来指示状态。返回值0表原创 2021-01-18 23:29:43 · 196 阅读 · 0 评论