C/C++
延禾xy
个人学习记录及思考。专注当下,停止焦虑。
展开
-
C ++的this指针
C++的this指针原创 2015-08-12 11:12:27 · 627 阅读 · 0 评论 -
typedef用法
今天看到一个typedef定义函数的语句,不甚了解,便查看了一些资料。 1. 用typedef定义一个类型的别名typedef char* pchar;那么pchar与char *是同一类型 2. c语言中用typedef定义结构体 3. 用typedef自定义函数指针原创 2016-05-09 11:44:31 · 549 阅读 · 0 评论 -
C/C++内存管理详解(转载)
转载: http://chenqx.github.io/2014/09/25/Cpp-Memory-Management/内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过转载 2016-07-30 11:33:02 · 313 阅读 · 0 评论 -
C++ priority_queue(优先队列)使用
优先队列:优先队列是一个容器,允许对数时间插入的代价,常熟市建的最大值(或者最小值)。 使用STL的std::priority_queue需要包含头文件queue定义如下:template< class T, class Container = std::vector<T>, class Compare = std::less<typename Container::val原创 2016-12-16 20:46:03 · 2671 阅读 · 0 评论 -
C++并发编程指南1
文章目录并发计算机领域的并发并发的途径为什么要使用并发关注点分离提高性能什么时候不使用并发C++并发性能一个简单的C++多线程程序并发两个或多个独立的活动同时发生。计算机领域的并发并发:单个系统里同时执行多个独立的任务。对于只有一个处理器的计算机:同一时刻只能执行一个任务,当它在多个任务切换执行时,可以看成多个并行任务在执行,仍然称为并发。对于多核计算机:可以真正做到任务同时执行,称为...原创 2019-08-19 11:09:58 · 280 阅读 · 0 评论 -
C++并发编程指南2
文章目录线程管理基础启动线程等待线程向线程函数传递参数转移线程所有权多个thread对象之间转移函数返回thread对象thread作为参数传递多个线程并等待结束运行时决定线程数量标识线程线程管理基础每个程序至少有一个线程:执行main()函数的线程,其余线程有其各自的入口函数。线程与原始线程(以main()为入口函数的线程)同时运行。如同main()函数执行完会退出一样,当线程执行完入口函数...原创 2019-08-19 14:30:19 · 180 阅读 · 0 评论 -
cJSON介绍及使用demo
文章目录JSON简介JSON的形式JSON示例cJSON简介使用示例JSON简介JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。JSON的两种结构:“名称/值”对的集合(A collection of name/value pairs)。值的有序列表(An ordered list of val...原创 2019-08-23 17:16:58 · 1947 阅读 · 0 评论 -
cJSON源码分析1-基础
文章目录宏定义调用方式版本类型定义cJSON结构bool值定义内存管理最大深度HOOK宏定义调用方式stdcall: C++标准调用方式。参数从右向左依次压入堆栈.由被调用函数自己来恢复堆栈,称为自动清栈。函数名自动加前导下划线,后面紧跟着一个@,其后紧跟着参数的大小。cdecl调用方式又称为C调用方式,是C语言缺省的调用方式。参数从右向左依次压入堆栈.由调用者恢复堆栈,称...原创 2019-08-24 15:03:00 · 820 阅读 · 0 评论 -
cJSON源码分析2-接口
文章目录类型判断函数声明实现原理创建函数声明具体分析添加函数接口添加到数组添加到对象删除接口具体分析获取接口具体分析类型判断函数声明//这一系列函数检查item的type是不是某一类型CJSON_PUBLIC(cJSON_bool) cJSON_IsInvalid(const cJSON * const item);CJSON_PUBLIC(cJSON_bool) cJSON_IsFal...原创 2019-08-24 15:04:23 · 534 阅读 · 0 评论 -
cJSON源码分析3-核心解析算法
解析函数对于字符串,调用cJSON_Parse解析为一个cJSON对象CJSON_PUBLIC(cJSON *) cJSON_Parse(const char *value);parser_buffer为存解析的字符串,使用parse_buffer.//解析的缓存typedef struct{ const unsigned char *content; //字符串内容 ...原创 2019-08-24 16:06:24 · 827 阅读 · 0 评论 -
C语言柔性数组
什么是柔性数组(Fiexibel Array)在C99中的定义如下 As a special case, the last element of a structure with more than one named member may have an incomplete array type; this is called a flexible array member.原创 2016-05-19 15:56:15 · 400 阅读 · 0 评论 -
qsort用法
qsort用法介绍void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *)); base待排序数组首地址 nelem数组中待排序元素数量 width各元素的占用空间大小 fcmp指向函数的指针功能:使用快速排序例程进行排序时间复杂度:n*log(n)原创 2016-05-19 19:26:15 · 476 阅读 · 0 评论 -
用typedef定义函数类型
今天看到一个typedef定义函数的语句,不甚了解,便查看了一些资料。1、用typedef定义一个类型的别名2、c语言中用typedef定义结构体3、用typedef自定义函数指针原创 2015-11-05 09:54:54 · 713 阅读 · 0 评论 -
typedef的一些用法
今天看到一个typedef定义函数的语句,不甚了解,便查看了一些资料。 1、用typedef定义一个类型的别名typedef char * pchar;那么,pchar可以说和char *是同一类型2、C语言中用typedef定义结构体。这个应该都比较容易理解3、用typedef自定义函数指针#include <stdio.h>typedef void(*funcPoint)(int i); /原创 2016-06-11 09:24:51 · 380 阅读 · 0 评论 -
C++ unordered_map
unordered_map的定义template < class Key,class T,class Hash = hash<Key>,class Pred = equal_to<Key>,class Alloc = allocator< pair<const Key,T> >> class unordered_map;原创 2016-07-27 09:08:43 · 21187 阅读 · 0 评论 -
模版全特化与偏特化
/*1、模版的特化对于一个模版,对其中的所有模版参数指定确定的类型。2、偏特化对于一个模版,部分的模版参数指定确定的类型3、在进行模版实例化的时候,编译器会对特定的类型找到最合适,最匹配的实现。*/#include <iostream>using namespace std;//模版template<class T1, class T2>class Test{public:原创 2016-07-27 09:25:20 · 304 阅读 · 0 评论 -
new运算符 和 operator new
new运算符 和 operator newnew为C++中常用的一个运算符,比如 A* a = new A;对于new来说,有new和::new之分,前者位于std,后者为全局的new。 operator new():指对new的重载形式,它是一个函数,并不是运算符。对于operator new来说,分为全局重载和类重载,全局重载是 void* ::operator new(size_t si原创 2016-07-27 09:30:20 · 456 阅读 · 0 评论 -
【C++11】30分钟了解C++11新特性
什么是C++11C++11是曾经被叫做C++0x,是对目前C++语言的扩展和修正,C++11不仅包含核心语言的新机能,而且扩展了C++的标准程序库(STL),并入了大部分的C++ Technical Report 1(TR1)程序库(数学的特殊函数除外)。C++11包括大量的新特性:包括lambda表达式,类型推导关键字auto、decltype,和模板的大量改进。本文将对C++11的以上新特性进行转载 2016-07-28 21:28:17 · 318 阅读 · 0 评论 -
C++11系列-改进的类型推导:auto、decltype和新的函数语法
转载:http://towriting.com/blog/2013/08/08/improved-type-inference-in-cpp11/C++11引入了一些新的实用的类型推导能力,这意味着你可以花费更少的时间去写那些编译器已经知道的东西。当然有些时候你需要帮助编译器或者你的编程伙伴。但是C++11,你可以在一些乏味的东西上花更少的时间,而多去关注逻辑本身。auto之乐在C++11中,如果编转载 2016-07-28 21:38:34 · 791 阅读 · 0 评论 -
C语言字符串长度和字符串复制实现
#include <stdio.h>#include <stdlib.h>#include <string.h>//字符串的长度int mystrlen(const char* str){ if (str == NULL) return -1; int len = 0; while (*str++ != '\0') { len+原创 2016-06-08 10:17:43 · 1703 阅读 · 0 评论 -
C内存模型
程序运行时操作系统把磁盘的代码load到内存,然后分配给该进程一个内存空间,分为堆区,栈区,全局区和代码区如图1所示。操作系统找到main函数开始执行程序。 代码区:存放程序的二进制代码 全局区:全局变量和静态变量。初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一个区域。原创 2016-05-24 18:46:47 · 695 阅读 · 0 评论 -
如何正确使用C中的可变参数
C语言中不定参数个数的处理方法声明存放的位置 va_list va;开启 va_start迭代获取 va_arg结束清理 va_end示例:#include <stdio.h>#include <stdarg.h>double sum(int, ...);int main(){ double s, t; s = sum(3, 1...原创 2019-09-18 17:49:00 · 216 阅读 · 0 评论