![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C&C++
文章平均质量分 86
C++学习
微小冷
这个作者很懒,什么都没留下…
展开
-
C语言标准库深度整理
C语言标准库是一组内置的函数、常量,被定义在15个头文件中,提供了C语言中最基础的功能,本文对这些功能进行深入的解读,并提供代码示例。原创 2022-05-25 12:38:08 · 4363 阅读 · 2 评论 -
用C语言写计算器
用C语言写一个计算器,除了四则混合运算之外,还支持三角函数和绝对值等函数。计算结果如下abs(3*5-4^2)=1.00000025-7+6*(4-5)=12.000000原创 2023-09-27 08:03:27 · 1906 阅读 · 1 评论 -
C++面向对象入门这一篇就够了
包括C++类的封装、继承、多态。struct和class的区别,explicit和静态成员在构造过程中的意义,自引用与链式调用,通过虚函数实现接口的功能,成员函数与运算符重载等内容。原创 2019-12-30 17:07:26 · 2371 阅读 · 3 评论 -
C语言实现二叉搜索树BST
二叉搜索树(Binary Search Tree, BST)要求父节点大于等于其左子节点,而小于等于其右子节点,这样递归类推,相当于父节点大于等于其左侧的所有节点而小于等于右侧的所有节点。原创 2023-07-01 08:00:00 · 486 阅读 · 0 评论 -
VS2022 CUDA环境配置
其自带的模板程序中,会用到``这个语法,表示GPU调用的线程块,在示例程序中,在调用自定义函数`addKernel`时,用到了下面的代码,表示调用1个线程块,每个线程块中有5个线程。原创 2023-05-23 07:45:00 · 7064 阅读 · 11 评论 -
C++多线程绑定CPU
作为成熟的操作系统,Windows为了更加充分利用CPU,会动态分配线程占用的CPU资源,以确保每个CPU核心不过累;另一方面,Intel作为成熟的CPU,为了充分考虑性能和能耗之间的均衡,当CPU没有满负荷运行的时候会自动降频。原创 2023-05-22 08:00:00 · 1388 阅读 · 0 评论 -
C语言老题新解16-20 用命令行打印一些图案
11 打印字母C12 输出国际象棋棋盘。13 打印楼梯,同时在楼梯上方打印两个笑脸。14 输出9*9 口诀。15 有一道题要输出一个图形,然后Very Beautiful。原创 2023-03-18 06:00:00 · 1030 阅读 · 0 评论 -
C语言老题新解第1-5题
有1, 2, 3, 4四个数字,能组成多少互不相同且无重复数字的三位数?都是多少?最简单当然是三重循环嵌套在一起就完事儿了,但我患有重度循环恐惧症,看到三个for叠在一起容易吓尿裤子,所以换种递归的写法,尽管看上去不太划算,但如果把问题变成1234567组成不重复的6位数字,可能好处就会显现出来。原创 2023-03-05 07:45:00 · 829 阅读 · 0 评论 -
深入C语言——实现可变参数函数
stdarg.h提供了C语言对可变参数的支持,有了这个函数,就可以实现多个参数求统计参数的功能,例如求最大值原创 2023-02-12 09:30:00 · 1486 阅读 · 2 评论 -
用C语言写一个计算器
用C语言写一个计算器用C语言写一个计算器,除了四则混合运算之外,还支持三角函数和绝对值等函数。PS E:\Code\PL\calc> .\a.exe abs(3*5-4^2)abs(3*5-4^2)=1.00000025-7+6*(4-5)25-7+6*(4-5)=12.000000文章目录用C语言写一个计算器1. 加减法运算2. 加法和乘法3. 四则混合运算4. 浮点型计算器程序5. 加入三角函数在计算器中,至少包含两类变量,即数字和运算符。例如,如果希望实现a+b×(c−原创 2020-12-23 18:03:38 · 48577 阅读 · 33 评论 -
C语言写一个散列表
文章目录快速理解散列表散列函数防撞快速理解散列表散列表,就是下标可以为字母的数组。假设现有一个数组int a[100],想查找其中第40个元素,则直接输入a[40]就可以了,时间复杂度为O(1)O(1)O(1)。问题在于,当下标不是数字,而是一个字符串的时候,可能需要一个超大的空间才能将所有下标妥善地存放在特定的位置。例如,若以大小写字母作为下标索引,那么一位就需要预留52个空间,10位就需要521052^{10}5210这么大的空间,根本没有设备可以满足。好在,521052^{10}5210这么原创 2021-12-30 14:23:25 · 2586 阅读 · 2 评论 -
C语言希尔排序及其增量序列
绝大多数人并没有理解希尔排序,至少他们所写的希尔排序,并没有真正突破$O(n^2)$。原创 2022-06-18 09:58:56 · 2547 阅读 · 1 评论 -
Windows内核开发初步
环境配置并不复杂,只需要按照微软的要求装好VS2019和WDK,就可以在创建新项目中找到Driver。如果用的是Win11,可参考此文:驱动开发Windows11+VS2019环境配置打开VS->创建新项目->Empty WDM Driver->创建,并删除初始项目Driver Files里面的.inf文件。接下来新建一个wd.cpp文件,代码为#include<ntddk.h>void SampleUnload(_In_ PDRIVER_OBJECT DriverO原创 2022-05-31 14:25:17 · 1674 阅读 · 0 评论 -
OpenGL快速入门:生成第一个三角形
OpenGL中的GL,是Graphics Library,即图形库,也就是说OpenGL的功能是渲染图形,而非图片。但对于一个三维图形,必须要用到x,y,zx,y,zx,y,z三个坐标才能描述。但屏幕也好、窗口也罢,都只是个平面,即只有两个绘图坐标,所以屏幕上所展示出来的三维图形,可以理解成是三维图形的相片。从图形变成图片,倒也不是降维,因为视线被遮挡,无论是相机还是人眼,看到的都只是几何体的表面而已。所谓几何体的表面,可以通过顶点的集合来表示。众所周知,两点成线,三个不共线的点,可以形成一个三角形,原创 2022-05-09 08:29:44 · 1002 阅读 · 0 评论 -
C++元编程初步
C++中template的基本用法,包括类模板、函数模板,模板参数类型,参数变化,最终用template实现了一个元组。原创 2019-12-31 13:49:11 · 1873 阅读 · 0 评论 -
C语言实现链表、堆栈和队列
通过C语言实现单向链表、有序链表、循环链表、数组堆栈、链式堆栈以及对了,并且给出了一种堆栈的面向对象形式。原创 2019-12-13 09:02:14 · 2624 阅读 · 0 评论 -
C语言多线程
在C语言中创建线程方式如下#include <pthread.h>pthread_create (thread, attr, start_routine, arg)其中,thread为线程指针;attr为线程属性,默认NULL;start_routine为线程运行函数起始地址;arg为运行函数的参数。无参数时使用NULL。如果线程成功创建,函数返回0,否则说明创建失败。当线程完成工作后,若无需继续存在,则会调用pthread_exit函数。也就是说,这个函数可以显式地退出一个线程。原创 2022-03-19 16:22:42 · 8840 阅读 · 3 评论 -
C语言保留字
在ANSI C标准中,C语言共有32个关键字,包含9种控制语句,区分大小写;C99在其基础上,新增5个关键字;C11又新增7个关键字,总共44个。32数值类型7short, int, long, double, float,unsigned, signed,其他类型1char类型判定2typedef, sizeof声明结构3struct, enum, union,特征修饰2const, volatile存储器指定4auto, re原创 2022-03-27 22:20:23 · 3960 阅读 · 0 评论 -
C语言实现八种排序算法
通过最基础的C语言实现选择排序、冒泡排序、插入排序、归并排序、希尔排序、快速排序、堆排序以及计数排序。平时用惯了高级语言高级工具高级算法,难免对一些基础算法感到生疏。但最基础的排序算法中实则蕴含着相当丰富的优化四维,熟练运用可起到举一反三之功效。原创 2024-01-21 08:30:00 · 2460 阅读 · 1 评论 -
C语言实现高级数据结构之B树
通过C语言实现B树的添加、查询、删除等操作。原创 2019-12-23 17:18:47 · 2401 阅读 · 1 评论 -
OpenGL着色器初步,让三角形的颜色随时间变化
前情提要:OpenGL+VS2022环境配置与变化的背景开始学习OpenGL:生成第一个三角形源码地址:OpenGL 着色器初步,颜色变化的三角形接下来要做的是对三角形着色,着色需要用到着色器,着色器可以理解为是完全工作在硬件上的一个机器,故而需要一个使之运行的指令,这个指令被称为GLSL,即GL Shader Language,着色语言。为了能够更加直观地理解着色器的方法,接下来以这个三角形作为讲解对象其顶点的定义如下GLfloat vertices[] = { // 位置原创 2022-05-18 12:54:07 · 2063 阅读 · 0 评论 -
OpenGL+VS2022环境配置与变化的背景
文章目录环境配置测试环境配置1 准备下载并安装VS2022下载GLEW,并解压下载GLFW,并解压2 新建工程打开VS2022->创建新项目->C++ 空项目->命名为testOpenGL右侧解决方案资源管理器下,右键源文件->添加->新建项,创建名为main.cpp的源文件3 配置右键项目名称testOpenGL->属性->进入属性页C/C++->常规->附加包含目录->编辑,将解压后的GLEW和GLFW文件夹中的原创 2022-05-03 12:09:39 · 2650 阅读 · 3 评论 -
C语言读取bmp图像
BMP图像编码BMP即bitmap,也就是位图,一般由4部分组成:文件头信息块、图像描述信息块、颜色表(在真彩色模式无颜色表)和图像数据区。在图像数据之前,如图所示,共有54位数据其中,0x424d在十进制为19778,对应的ASCII码为BM,表示这是个bitmap文件。在C语言中,short类型为16位,即2字节;int为4字节。考虑到BMP格式的文件头中,每个信息基本都是2字节的倍数,故而用int和short便可描述出bmp格式的文件头。文件信息头[14 bytes]存储着文件类型,文件大原创 2022-03-24 18:00:27 · 12776 阅读 · 4 评论 -
C语言根据数字创建矩阵
书接上文用C语言实现一个矩阵,最直接的方案就是通过数字、空格和逗号,例如1 2 3,4 5 6, 7 8 9即可用来代表[123456789]\begin{bmatrix}1&2&3\\4&5&6\\7&8&9\end{bmatrix}⎣⎡147258369⎦⎤考虑到在矩阵运算时可能会产生的歧义,即1 2, 3 4 + 5这代码无法解释,故为其加上一层括号,用[a b, c d]来创建数值矩阵。简单起见,第一版程序要求矩阵原创 2021-10-18 14:00:51 · 2731 阅读 · 0 评论 -
用C语言实现一个矩阵
C语言实现矩阵矩阵作为一个结构体而言,至少要包含行数、列数以及数据。#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct{ int row, col, size; double *data;} Matrix;特殊矩阵接下来通过这个结构体实现一些特殊的矩阵,例如包括相同元素的矩阵、对角矩阵等。#define SetBase(mat) \ (M原创 2021-10-06 10:56:45 · 13845 阅读 · 1 评论 -
C++ dlib在VS2019下的环境搭建与基本使用
Dlib是一个现代的C++工具库,以机器学习算法为主。本文详述了Dlib+VS2019的环境配置过程,并精简了两个入门案例用于学习。原创 2021-08-03 14:35:13 · 1869 阅读 · 0 评论 -
WTL基础入门
WTL即Windows Template Library,提供了一套用于Windows的组件,由于体积很小,而且生成的exe也很小,所以做一些测试软件就十分经济。原创 2021-07-30 19:35:14 · 2941 阅读 · 0 评论 -
C++ Eigen的安装和基础使用
Eigen是一个C++的数值计算库,包含矩阵、矢量、数值求解以及相关的算法。原创 2021-07-29 22:11:51 · 5571 阅读 · 0 评论 -
C++ Armadillo矩阵库的安装与基本用法
文章目录Armadillo安装入门案例直接赋值切片常用函数Armadillo安装Armadillo是一个具有Matlab风格的线性代数包。下载之后解压到任意文件夹,然后对VS工程进行设置。菜单栏生成->配置管理器,将平台改为x64右键项目名称->属性(快捷键Shift+F4),编辑VC++目录。将..\armadillo-9.900.5\examples\lib_win64这个文件夹的绝对路径添加到包含目录和库目录中。点击C/C++->常规,将..\armadillo-9.9原创 2021-07-28 22:14:09 · 7193 阅读 · 3 评论