C/C++
文章平均质量分 65
thginWalker
先了解世界,再隐秘其中!
展开
-
《深入理解C指针》——指针和结构体
前言本章继续拓展前面所学的指针概念,包括结构体的数组表示法、结构体的内存分配、结构体内存管理技术以及函数指针的用法。介绍结构体的声明:struct _person { char* firstName; char* lastName; char* title; unsigned int age;}使用typedef关键字可以简化使用:struct struct_person { char* firstName; char* lastName; char* title; unsi转载 2022-05-11 19:53:35 · 480 阅读 · 0 评论 -
《深入理解C指针》——指针和字符串
字符串基础字符串是以ASCII字符NUL结尾的字符序列。ASCII字符NUL表示为\0。字符串通常存储在数组或者从堆上分配的内存中。不过,并非所有的字符数组都是字符串,字符数组可能没有NUL字符。字符数组也用来表示布尔值等小的整数单元,以节省内存空间。C中有两种类型的字符串:单字节字符串:由char数据类型组成的序列宽字符串:由wchar_t数据类型组成的序列wchar_t数据类型用来表示宽字符,要么是16位宽,要么是32位宽。这两种字符串都以NUL结尾。可以在string.h中找到单字节字符转载 2022-05-07 15:20:37 · 359 阅读 · 0 评论 -
《深入理解C指针》——指针和数组
数组概述一维数组转载 2022-05-05 20:12:04 · 289 阅读 · 0 评论 -
《深入理解C指针》——指针和函数
前言指针对函数功能的贡献极大。它们能够将数据传递给函数,并且允许函数对数据进行修改。我们可以将复杂数据用结构体指针的形式传递给函数和从函数返回。如果指针持有函数的地址,就能动态控制程序的执行流。在使用函数时,有两种情况指针很有用。首先是将指针传递给函数,这时函数可以修改指针所引用的数据,也可以更高效地传递大块信息。另一种情况是声明函数指针。本质上,函数表示法就是指针表示法。函数名字经过求值会变成函数的地址,然后函数参数会被传递给函数。我们将会看到,函数指针为控制程序的执行流提供了新的选择。程序的栈和转载 2022-05-04 11:19:02 · 247 阅读 · 0 评论 -
《深入理解C指针》——C的动态内存管理
动态内存分配动态内存分配函数用free函数释放内存迷途指针动态内存分配技术小结转载 2022-05-02 14:26:56 · 365 阅读 · 0 评论 -
《深入理解C指针》——认识指针
关于指针的一些基本概念作用域生命周期全局内存整个文件应用程序的生命周期静态内存声明它的函数内部应用程序的生命周期自动内存(局部内存)声明它的函数内部限制在函数执行时间内动态内存由引用该内存的指针决定知道内存释放理解这些内存类型可以更好地理解指针。大部分指针用来操作内存中的数据,因此理解内存的分区和组织方式有助于我们弄清楚指针如何操作内存。为什么要精通指针指针有几种用途,包括:写出快速高效的代码;为解决很多类问题提转载 2022-05-01 15:05:06 · 3787 阅读 · 0 评论 -
C++常见的预定义宏
来源这些都是预定义宏(Predefined Macros),gcc还是vc还是sun提供的cc等编译器都会有这些预定义宏的。常见宏宏定义含义__FILE__当前文件名__FUNCTION__当前函数名__LINE__当前行号__DATE__当前编译日期__TIME__当前编译时间...原创 2022-01-03 12:53:56 · 726 阅读 · 0 评论 -
实现《魔影》音视频模块开发
1.音视频采样编码的基本原理将模拟信号转化为数字信号,隔段时间进行采样2.ffmpeg的基本情况介绍Fmpeg 是领先的多媒体框架,能够解码、编码、转码、混合、解密、流媒体、过滤和播放人类和机器创造的几乎所有东西。它支持最晦涩的古老格式,直到最尖端的格式。无论它们是由某个标准委员会、社区还是公司设计的。它还具有高度的便携性。FFmpeg 可以在 多个平台构建环境、机器架构和配置下编译、运行,并通过测试基础设施 FATE。FFmpeg命令行工具获取下载地址访问FFmpeg官网(http:转载 2021-04-17 17:05:19 · 495 阅读 · 0 评论 -
C++的陷阱和经验
谈谈个人学习工作的一点感悟实现技术的目标:一直掌握最新的技术做别人做不了的技术(搜索引擎、操作系统)如果两个都做不到:就不要专注于技术,从长远角度出发,谋求出路,寻求多种出路发展。推荐几本CPP的书籍推荐几本C++的书籍:入门:《C++ Primer》最佳实践:《C++高质量编程》《Effective C++》《More Effective C++》《Effective STL》《The C++ Programming Language》深入:《STL源码剖析》《CO原创 2021-04-17 16:16:49 · 285 阅读 · 0 评论 -
const关键字细节汇总
前言关键字const多才多艺,你可以用它在class外部修饰global或namespace作用域中的常量,或修饰文件、函数、或区块作用域(block scope)中被声明为static的对象,也可以修饰class内部的static和non-static成员变量。面对指针,也可以指向指针本身、指针指向物,或两者都(或都不)是const。const与指针规则:如果const出现在星号左边,表示被指物是常量;如果出现在星号右边,表示指针自身是常量;如果出现在星号两边,表示被指物和指针两者都是常量。修饰原创 2021-03-16 19:23:52 · 308 阅读 · 0 评论 -
C++ 刷leetcode技巧及总结,持续更新
C++ 刷leetcode技巧及总结,持续更新原创 2021-03-03 10:55:17 · 744 阅读 · 0 评论 -
VS2019 后面有“::”的名称一定是类名或命名空间名 解决办法汇总
对 '后面有“::”的名称一定是类名或命名空间名'的错误解决办法进行汇总原创 2021-02-08 00:18:52 · 27385 阅读 · 3 评论 -
C++ 侯捷系列视频汇总
前言既然说好了要好好学习C++,侯捷大神的视频岂能不看,此处继续挖坑,进行相关视频的汇总工作。目录C++面向对象高级开发Startup揭秘(工程实践)C++内存管理(工程实践)STL与泛型编程新标准C++11-14后记努力肝,才会有上流道长的荣耀。...原创 2021-01-26 17:32:03 · 7214 阅读 · 5 评论 -
二叉树非递归遍历方法汇总
前言之前在leetcode里面看到了关于二叉树前序遍历的迭代写法,刚刚开始不清楚啥是二叉树遍历的迭代写法,原来是非递归,显得有些尴尬!但是发现自己还是不太会写,然后进行记录汇总,方便后期学习!前序void PreOrder(TreeNode* root){ if(root == NULL) return; stack<TreeNode*> st; while(root != NULL || !st.empty()) { if(root) { visit(root);原创 2021-01-19 22:51:30 · 296 阅读 · 0 评论 -
C++进阶编程
STL标准库简介序列容器和函数对象基本使用关联容器map的基本使用和查找关联容器的插入删除及迭代器失效问题从函数指针到防函数模板算法transform和lambda表达式STL容器的统计与二分查找从手写全排列到STL的实现迭代器基本使用手写GC与异常自定义迭代器与手写GC容器适配器空间配置器初步自定义空间配置器STL空间配置器源码剖析与STL总结关于Boost库CPP多线程基础多线程银行存取款案例多线程小结...转载 2020-11-18 00:27:16 · 692 阅读 · 0 评论 -
C++编程思想
软件的设计模式单例模式观察着模式转载 2020-11-18 00:11:19 · 1298 阅读 · 2 评论 -
C++高级语法
从抽象到对面对象编程面向对象的抽象法则1-具体类型的抽象对象的属性运算符重载拷贝构造及临时对象的优化前置与后置操作符标准输入输出IO重载IO流基础IO缓冲区文件操作基础文本文件的操作二进制文件的操作-减4分Complex其他运算符重载头文件重复包含问题关于前七章的练习题及答案深拷贝浅拷贝及move语义的优化面向对象的抽象法则2Hack对象模型和虚函数面向对象三大特性及总结...转载 2020-11-12 23:47:59 · 1110 阅读 · 0 评论 -
C++基础句法
1.图灵机与三种基本结构2.if语句基础和例子3.switch分支基础4.switch和if的对比5.自定义类型——枚举6.自定义类型——结构体与联合体7.结构体的内存布局8.三种循环的基本使用与比较9.for循环的一个优化实例10.函数基础11.函数重载overload与Name Mangling12.指向函数的指针与返回指针的函数13.命名空间14.函数体的Hack过程15.内联函数16.数学归纳法与递归17.递归的特点和Hack过程18.尾递归的优化19.递归的动态转载 2020-11-11 00:31:06 · 461 阅读 · 0 评论 -
彻底学会C++指针,引用
640K ought to be enough for everybody. ——Bill Gates1.指针的概念2.左值与右值3.一般指针、数组指针和指针数组4.const与指针5.指向指针的指针6.关于野指针7.指针的基本操作8.CPP程序的存储区域划分9.CPP程序的存储区域划分总结10.CPP动态分配和回收原则11.RAII初步12.几种变量的对比13.内存泄漏14.智能指针auto_ptr15.智能指针unique_ptr16.shared_ptr.转载 2020-11-06 12:58:42 · 1312 阅读 · 0 评论 -
C++基础容器
1.序列容器——数组概念:代表内存里一组连续的同类型存储区可以用来把多个存储区合并成一个整体比如:int arr[10] = {1,2,3,4,5,6,7,8};数组声明:int arr[10];类型名称int表示数组里所有元素的类型名称arr是数组的名称整数10表示数组里包含的元素个数数组里元素个数不可以改变2.off-by-one error数组下标3.数组增删改查及二维数组4.动态数组Vector5.字符串简介6.Unicode编码7.字符串的指针标识8.转载 2020-11-03 12:52:16 · 440 阅读 · 1 评论 -
C++概括
C++的特点优点:强大的抽象封装能力:这让C++语言具备了强大的开发工程能力,在封装的同时C++最大程度的保留了高性能;高性能:运行快,并且占用资源少一直是C++语言的追求;低功耗:特别适合在各种微型的嵌入式设备中运行高效的程序;缺点:语法相对复杂,细节比较多,学习曲线比较陡;需要一些好的规范和范式,否则代码很难维护;CPP的应用C++主要用来做什么大型桌面应用(Adobe Photoshop、Google Chrome、Microsoft office)大型网站后台(搜索引转载 2020-11-01 16:16:08 · 690 阅读 · 0 评论 -
C++的运算符与表达式
1.运算符表达式和基本语句运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C++内置了丰富的运算符,并提供了以下类型的运算符:算术运算符关系运算符逻辑运算符位运算符赋值运算符杂项运算符在程序中,运算符是用来操作数据的,因此,这些数据也被称为操作数,使用运算符将操作数连接而成的式子称为表达式。表达式具有如下特点:常量和变量都是表达式,例如,常量3.14、变量i;运算符的类型对应表达式的类型,例如,算术运算符对应算术表达式;每一个表达式都有自己的值,即表达式都有运算结果;转载 2020-10-28 19:02:09 · 2564 阅读 · 0 评论 -
C++基础语法
1 编译型语言编程语言的层次和类型(从上到下,使用层次更接近于人类使用,但运行效率逐渐降低)机器语言,汇编语言等编译型语言,如C++,C等解释型语言,如Basic,Python等脚本语言,如bash,csh等编译型语言一般需要经历编译和链接的过程,才能变成真正可执行的程序2 语言的数据类型一个简单的例子一个1+1=2的例子,代码如下:int sum;int m = 1;int n = 1;sum = m + n;数据类型的内部结构C++中的每个变量都有其数据类型,数据类转载 2020-10-27 14:04:48 · 635 阅读 · 0 评论 -
《重学C++ 重构你的C++知识体系》笔记汇总
前言觉得这门课特别好,决定认认真真学习下,带好耳机,做好笔记索引C++基础语法C++的运算符与表达式C++基础容器彻底先学会C++指针,引用C++基础句法C++高级语法C++编程思想C++进阶编程C++的陷阱和经验桌面应用项目实战:设计项目的架构和标准实现项目《慕影》的通用组件模块实现音视频开发模块实现《慕影》播放器UI模块实现《慕影》播放器其他功能模块软件测试及性能调优课程总结总结加快学习的步伐呀!...原创 2020-10-27 10:18:48 · 3476 阅读 · 29 评论 -
Visual Stduio使用技巧汇总
前言经常用Visual Studio写C++,但是目前除了会经常使用调试之外,几乎很多细节都不清楚,此处是为了进行记录汇总使用,持续更新!总结原创 2020-10-21 00:01:22 · 397 阅读 · 3 评论 -
整个完整的项目打包成DLL详细版
前言之前对于dll的链接无非是抽象出来的公共方法,但是不知道的是,整个C++项目可以完整的打包成DLL文件,而且打包后然后新建项目在调用。过程打包环境:Visual Studio2019步骤:打开Visual Studo2019,点击“文件”->“新建”->”项目”,选择“动态链接库”模板如下同,然后点击下一步,在配置新项目栏目输入“项目名称”,选择“位置”,然后勾选中“将...原创 2019-12-08 11:54:15 · 7093 阅读 · 7 评论 -
C++程序编写中的细节汇总
前言无论如何感觉更多的接触的是算法,为了重现或者优化都需要用到C++编程细节,此处主要为方便自身的学习和研究。内容初始化随机种子由于C++本身没有绝对的随机数,为了保证生成的随机数绝对随机,为此我们需要在初始化随机数之前生成随机种子,原理就自己搜索吧!(其实笔者也不是很清晰)。以下代码(任选其一)就是用系统时间做随机种子,时刻在发生改变。srand(time(NULL));srand(...原创 2019-12-02 10:42:15 · 390 阅读 · 0 评论 -
C++精度计算问题
前言在一次做(瞎)项(倒)目(腾)的经历中,发现了C++精度计算问题很复杂,害得我找了半天都没有找到这个错误,在学哥的帮助下最终找到了问题所在,特此记之。代码这是抽离出来的主要代码。#include<iostream>using namespace std;void genAgent(int islandnum, int agentnum, float addagent)...原创 2019-10-05 17:00:52 · 1681 阅读 · 1 评论 -
C语言函数指针
C语言的高级特性,关于指针的用法我想是不是应该认真了解下哦! 指针是C语言的灵魂。转载 2017-07-21 14:15:00 · 464 阅读 · 0 评论 -
C语言命令行参数
C语言的高级特性,如何利用main函数的两个参数。转载 2017-07-21 14:39:21 · 1410 阅读 · 0 评论