笔记
文章平均质量分 61
Gy648
这个作者很懒,什么都没留下…
展开
-
RAII技术学习
RAII中的R代表资源,计算机中的一切可由程序员管理的,如指针的申请的内存,开启占用的文件描述符,创建与销毁的锁等等对于资源的一般操作即就是申请使用释放为了避免一些人为与非人为的因素造成资源的未释放或者是未初始化的野指针的问题,如没有delte的内存,没有unlock的锁,所诞生出的技术。...............原创 2022-07-20 11:57:27 · 449 阅读 · 3 评论 -
线程池的学习记录
1.对于一个线程池来说主体应大致由三部分组成2.模块分析1.main()2.pthreadpool_create()3.pthread_destory对于关闭属性参数置为1回收管理管理者线程唤醒阻塞的消费者线程,让其进行自杀释放堆内存,销毁锁变量释放线程池结构体指针4.pthread_add向任务队列中加入任务5.threadeixt让不符合条件的线程退出剩下的部分可以需要再创建或者细分线程池结构体创始化向线程池中加入任务执行任务的函数void* w原创 2022-06-09 14:45:00 · 220 阅读 · 1 评论 -
函数对象(仿函数)
函数对象函数对象(仿函数)谓词一元谓词二元谓词函数对象(仿函数)函数对象在使用时可以向普通函数那样调用,可以有参数,可以有返回值函数对象可以超出普通函数的概念,函数对象可以有自己的状态函数对象可以作为参数传递class myadd{public: int operator()(int v1,int v2) //对函数调用符重载 { return v1+v2; }};函数对象在使用时,可以向普通函数一样调用void test01(){ m原创 2022-05-23 08:30:00 · 101 阅读 · 0 评论 -
类模板的学习
函数模板一种实现泛型编程的方法template < typename T >函数的声明或定义template --声明模板 typename–数据类型 可以用classs替换在声明好的模板紧跟函数即可template<class T>void myswap(T& a, T& b){ T temp = a; a = b; b = temp;}使用方式为自动类型推导与显示指定类型myswap(a, b); //myswap<int原创 2022-05-16 09:30:00 · 88 阅读 · 3 评论 -
大整数加法
对于处理较大整数范围的数据时,会超出数据类型的存储范围造成数据溢出,所以对于大整数的运算我们借用的 竖式计算的思想 去实现例如 计算 12345+ 123456789的和在输入数字是可以采用使用字符串的输入形式,倒着计算每一位的和,当要进位时,在本位利用取余操作存到下一次加法过程中输入与存储# include <stdio.h># include <string.h># define MAXLEN 210 //改变位数int ...原创 2021-12-01 17:45:30 · 259 阅读 · 0 评论 -
实现strlen的几种方法
int my_strlen(char* str){ int cnt = 0; while (*str != '\0') { cnt++; str++; } return cnt;}运用指针加法移动来找到字符串结束标志,然后返回计数器的值int my_strlen(char* str){ char* strat = str; while (*str != '\0') { str++; } return str-strat;}同类型指针相减返回中间的元..原创 2021-11-09 20:19:20 · 240 阅读 · 0 评论 -
动态内存开辟
目录内存的使用方式1.malloc2. relloc3.free常见的问题动态内存函数头文件为 stdlib.h内存的使用方式栈区 : 局部变量 ,函数的形式参数,创建一个数组(非全局变量)堆区: 动态内存分配静态区 : 全局变量,静态变量,staic int a=10;1.mallocC 库函数void *malloc(size_t size)分配所需的内存空间,并返回一个指向它的指针。void *malloc(size_t size)...原创 2021-11-30 20:40:44 · 83 阅读 · 0 评论 -
结构(枚举与联合)体
一.结构体的声明struct tag (结构体类型名){member-list;} s1;(一定要注意结果的分号)此处的结构体类型名为tag 而 s1 所创建的是类型为tag的变量二.结构体的成员类型可以是整形,浮点型,数组,指针,或者是结构体三.结构体的定义和初始化struct Book{ char name[20];//书名 int number[4];//价格}b1={"zhangsan",40}; // 第一种是直接跟在后面..原创 2021-11-30 20:40:32 · 70 阅读 · 0 评论 -
C语言中数据的存储1.0
文章目录目录前言一、类型归类 2、浮点型家族3、构造类型(后面再作探讨)3、指针类型4、空类型void 表示空类型(无类型)二、类型的意义1.占据的内存大小2.作为数据时所操作的大小(即为数据看待类型的视角)三、数据在类型中存储(以整形和浮点型为例子)前言关于C语言中的一、类型归类 对于基本的c语言数据类型的基本归类 1、整形家族char (内存存储的为ascall码值,存储为整数) uns...原创 2021-11-18 21:10:15 · 694 阅读 · 2 评论 -
c语言中数据的存储2.0之浮点数的存储形式
浮点型在内存中的存储int n=9; float* pfloat=(float*)&n; printf("n的值为%d\n",n); printf("n的值为%f\n",*pfloat); * pfloat= 9.0; printf("n的值为 %d \n",n); printf("* pfloat的值为:%f",* pfloat);n的值为9n的值为0.000000n的值为 1091567616 * pfloat的值为:9.000000.原创 2021-11-23 09:00:00 · 637 阅读 · 1 评论 -
类中的不同成员特性
类对象作为类成员c++类中的成员可以是另一个类的对象,我们 称成员为 对象成员例如class A{}class B{ A a;}当其他类对象作为本类成员时,构造时候先构造类对象析构的顺序与之相反先有子体,组成母体,母体释放,子体解脱## 静态成员在成员变量和成员函数之前加上关键字static,被称为静态成员静态成员变量1.所有对象共享同一份数据2.在编译阶段分配内存3.类内声明,类外初始化class person(){public:原创 2022-03-15 21:34:12 · 992 阅读 · 0 评论 -
构造函数和析造函数特点
构造函数的调用默认情况下编译器至少给一个类添加3个函数1.默认构造函数(无参,函数体实现)--完成对象的初始化2.默认析构函数(无参,函数体为空)--完成对象的清理3.默认拷贝构造函数,属性进行值拷贝规则:如果用户定义了有参构造,c++不会提供无参构造,但是提供默认拷贝构造如果用户定义了拷贝构造函数,c++不会在提供其他函数 类名(){}构造函数的语法,1,没有返回值,也不写void;2,函数名称与类名相同;3,构造函数可以有参数,因此可以发...原创 2022-03-15 17:14:39 · 1780 阅读 · 1 评论 -
c++补充基础
一.命名空间定义以及使用 在c++中为了避免在大规模程序设计中,以及使用库时各种大量命名冲突,标准c++引入了关键字namespace,可以更好的控制标识符的作用域。对与变量a若是要使用须如上引用两次才可总结1.当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用 namespace std,这样才能正确使用cout。若不引入 namespa std,需要这样做 std::cout;2. c++标准为了和c区别开,规定头文件...原创 2022-03-14 21:45:39 · 98 阅读 · 0 评论