C++
文章平均质量分 65
yuanCruise
工科生的笔尖
展开
-
文件操作
随笔- 161 文章- 0 评论- 35 C语言文件操作详解C语言中没有输入输出语句,所有的输入输出功能都用 ANSI C提供的一组标准库函数来实现。文件操作标准库函数有: 文件的打开操作 fopen 打开一个文件 文件的关闭操作 fclose 关闭一个文件 文件的读写操作 fgetc 从文件转载 2016-01-21 11:01:25 · 484 阅读 · 0 评论 -
C++ | 公有,私有,受保护成员以及继承时的作用
1、public:public表明该数据成员、成员函数是对所有用户开放的,所有用户都可以直接进行调用2、private:private表示私有,私有的意思就是除了class自己之外,任何人都不可以直接使用。3、protected:protected对于子女、朋友来说,就是public的,可以自由使用,没有任何限制,而对于其他的外部class,protected就变成private。扩展资料:...转载 2019-01-21 19:23:18 · 4794 阅读 · 0 评论 -
C++ | 构建动态库
1.新建动态库点击文件——>新建——>项目点击Windows桌面——>选择静态库——>选择保存位置与静态库不同的是,创建完动态库会有一个如下图所示的dllmain.cpp函数。那么动态库为什么会多出这个文件呢?我们都知道动态库不同于静态库,动态库是可以独立运行的文件,和可执行文件相当类似,所以当其他文件(exe或者其他动态库)调用当前动态库时,就...原创 2019-03-08 21:47:58 · 581 阅读 · 0 评论 -
C++ | 调用动态库——静态链接
1.创建Windows控制台应用程序2.将DLL库和引导文件Lib以及头文件拷贝到调用目录下将创建好的动态库,动态库的引导Lib文件,以及头文件拷贝到工程目录下。3.插入动态库头文件动态库的头文件作为接口,是一个API。4.把动态库导引文件链接上右击项目,点击属性点击链接器,输入,附加依赖项,编辑把导引文件写入5.调用动态库成功如下图所示,上...原创 2019-03-08 21:48:29 · 769 阅读 · 0 评论 -
C++ | 构建静态库
1.新建静态库点击文件——>新建——>项目点击Windows桌面——>选择静态库——>选择保存位置2.为静态库添加类右击项目名称——>选择添加——>类——>添加TestLIb类3.实现静态库函数编写静态库的头文件和源文件(实现类函数)编写静态库的头文件和源文件(也可以实现外部函数)4.编译生成静态库编译成...原创 2019-03-07 01:06:57 · 483 阅读 · 0 评论 -
C++| 调用静态库
1.创建Windows控制台应用程序2.将Lib库和头文件拷贝到调用目录下将创建好的静态库,拷贝到工程目录下。3.插入静态库头文件静态库的头文件作为接口,是一个API。4.链接Lib库右击项目,点击属性点击链接器,输入,附加依赖项,编辑把静态库添加进去5.调用静态库成功如下图所示,上述准备工作完成后,就可以使用静态库中的函数了,至此静态库调用...原创 2019-03-07 01:08:28 · 10542 阅读 · 1 评论 -
C++ | 命名空间_namespace
C语言中是不存在命名空间的概念的,因为整个C语言工程就是一个大型的命名空间。当工程规模小时,不会产生大问题;但是一旦工程的规模大,会用到大量的动态库,尤其是第三方开发的动态库时往往就会遇到命名冲突的问题。因为不同的厂家开发的动态库中全局变量的命名很可能重复,为了避免这个问题,C++中新增了命名空间这一概念,使得通过命名空间的限定从而使用相同名称的全局变量。命名空间的用法:方法一:using n...原创 2019-03-24 18:47:40 · 445 阅读 · 0 评论 -
C++ | const限定符最基本的用法
下面来介绍两种const限定符最常用的用法:#####1.const用于限定指针所指向的内存空间。该种方式想要达到的目的如下:想要如下图二所示,能够使用如下传入参数s1结构体的值,但是想要如下图一所示,不想让opStudent这个函数内部改变该结构体的值。这种使用在开发大型或小型项目中,是最基本的需求。2.const用于限定指针的指向。该中方式没有上述第一种那么常见,但这边也来解释下,...原创 2019-04-03 00:17:10 · 436 阅读 · 0 评论 -
指针篇 | 不懂内存的算法工程师不是好厨子
经常会总结指针的用法和注意点,由于工作中基于学习到的深度学习网络模型构建功能时会遇到各种指针的使用,在实践中终于明白了指针的第一大重点是作为函数参数。接下来介绍下,一级指针,二级指针作为函数参数时实现的功能和注意事项。所谓输出功能:将main函数中定义的指针的地址传入子函数,在子函数中分配内存空间(“堆” or “常量”,因为只有这两个地方的内存空间不会在子函数结束后被释放掉),并对内存空间赋值...原创 2019-06-02 14:59:39 · 345 阅读 · 0 评论 -
指针篇 | 不懂内存的算法工程师不是好司机
想要构建一个算法工程,尤其是落地到设备端,C语言显然是不二之选,而内存是我们学习C语言永远绕不过的一道坎。但事实上,内存并没有我们想象中的那么可怕。本文中,我们姑且把内存分为四个区域:代码区,常量区,堆区,栈区。简单介绍下内存四区:1.代码区:该内存用于存放代码段。2.常量区:该内存用于存放各类常量,如字符串常量等。3.堆区:该内存用于存放用户自己开辟的空间,用户不手动释放,该内存就一直...原创 2019-06-02 15:00:24 · 357 阅读 · 0 评论 -
指针篇 | 指针的灵活让我想起了Python
本文的题目其实有点蹭Python热度的意思,指针确实很灵活,当然易用程度和Python还是没得比,想要灵活使用指针,仍然要花大工夫。但一旦你感受到了指针的真谛,你也就自然能够感受到指针的灵活了!本文通过字符串这一载体,为指针打个call。1.数组和指针为什么先要介绍下数组和指针,因为在C语言中,并没有字符串类型,字符串往往是搭载在字符数组,和指针中的。因此在开篇对数组和指针的异同做个简单的...原创 2019-06-02 15:01:00 · 450 阅读 · 0 评论 -
指针篇 | 教你把多级指针玩弄于鼓掌
二级指针算是一种相对高级的用法,很多人会因为其复杂,难以理解而尽可能的规避它。但在大型项目开发中,通常无法会避免使用二级指针,而且学习二级指针,能够帮助我们巩固指针存在的意义,学会了二级指针,你才真正意义上的掌握了c语言。指针存在的意义就是用来作函数参数的,二级指针也不例外。作为函数参数,我们把主函数比作功能齐全的系统,把子函数比作拥有特定功能的模块,那么对于大部分任务都会有如下两种需求:1....原创 2019-07-06 14:50:32 · 385 阅读 · 0 评论 -
学习深度学习框架源码有感 | 我以为我会C语言
记得刚开始接触caffe,yolo的darkent等框架时,学习框架源码的过程中,最大的感触就是明明我学过C,C++,为什么这种纯靠C,C++写的框架中用到的好多语法我都没见过?慢慢接触下来发现,C语言中还是有很多有意思的语法,比如template(模板),数组指针等等。这些知识点并没有在谭浩强老师的书里出现过。本文主要给大家介绍下数组指针。1.数组基础概念如下代码段,展示了几种初始化数组的方...原创 2019-07-06 14:51:43 · 949 阅读 · 0 评论 -
学习深度学习框架源码有感 | 反正我不会C语言
在上一篇文章中,有人留言问:数组指针这种结构存在的意义?其实刚开始我也是这么问的,这玩意有什么用?到后来我才知道,原来他居然就是多维数组。本文将展开讨论为什么数组指针可用作多维数组。PS.我已经不敢说我会C语言了。1.数组名中包含的小细节在这之前,我们先来介绍下C语言中的数组名所代表的含义。本文主要介绍数组名和数组名取地址,这两者的区别与联系。如下图所示,数组名代表了指向数组首元素的(指针)地...原创 2019-07-06 14:52:08 · 576 阅读 · 0 评论 -
【C++】:explicit关键字
首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).那么显示声明的构造函数和隐式声明的有什么区别呢? 我们来看下面的例子:class CxString // 没有使用explicit关键字的类声...转载 2018-08-23 14:22:41 · 261 阅读 · 0 评论 -
【C++】:编程规范
规则1.头文件依赖于前向申明【什么是前向申明】 当我们在头文件中需要类的定义时,只需要申明class CLASSNAME就可以了,无需使用#include “CLASSNAME.h”【带来的优势】 较少文件依赖,节约编译时间 更加明确的类的依赖关系【规则】 尽可能多的使用前向申明规则2.函数的参数顺序【规则】 参数的申明顺序为,输入参数在前,输出参数在后 输入参数...原创 2018-06-19 22:04:49 · 404 阅读 · 0 评论 -
C语言字符串解析
在处理字符串的程序当中,经常会分析字符串,从一大长串的字符串截取我们需要的数据,这如果通过自己手写函数来分析,虽然可以,但当你知道sscanf的功能,那就自己写函数分析就显得多此一举。这些函数的使用都很简单,总结一下,等下次使用一目了然。俗话说:好记性不如烂笔头,记录下来就是效率。以下源代码是本人测试的源文件,附带讲解注释。[cpp] view plai转载 2016-01-22 16:44:19 · 4462 阅读 · 1 评论 -
【C++】:委托FastDelegate
Fast Delegate这个头文件,主要的功能是对不同的函数进行统一化的调用。这里首先实现的是对void(void)【表示的是返回值和传入值都是void类型的函数】这样形式的函数的统一化委托。至于其他形式的要用到模板,所以等我学了模板之后再来总结,先把其他人的 代码放在第二部分。#include <stdio.h> #include "fastdelegate.h" ...原创 2018-06-11 23:19:48 · 915 阅读 · 0 评论 -
【C++】:const限定符 作用于变量&指针
const限定符const放在变量前面称为const常量const int MaxSize = 100 //定义一个常量MaxSize = 44 //试图修改一个常量,系统会报错const在文件中默认为局部变量若想要在其他文件中使用这个const变量,则需要在定义的时候加上extern Note: 非const变量默认是extern。因此不需要再变量前...原创 2018-06-05 13:50:48 · 883 阅读 · 0 评论 -
【C++】:STL标准库之string
//============================================================================// Name : InsertSort.cpp// Author : YL// Version ://==================================================...原创 2018-06-12 17:55:12 · 484 阅读 · 0 评论 -
【C++】:模板template
利用模板可以实现函数的参数和返回值根据输入定义。函数模板#include "stdafx.h"#include <iostream>using namespace std;template<typename T> // 或者 template<class T>T my_max(T a, T b){ retur原创 2018-06-13 12:16:25 · 293 阅读 · 0 评论 -
【C++】:STL标准库之容器vector & 迭代器
vector1.vector使用之前的准备#include<vector>using namespace std;2.vector采用模板类实现,vector对象的默认构造形式:vector vecT;vector<int> vecInt; //一个存放int的vector容器。vector<float&a原创 2018-06-13 12:36:46 · 902 阅读 · 0 评论 -
【C++】:STL标准库之容器deque & queue & stack & list
deque1.简介:deque是“double-ended queue”的缩写,和vector一样都是STL的容器,deque是双端的,而vector是单端的。 deque在接口上和vector非常相似,在许多操作的地方可以直接替换。 deque可以随机存取元素。 deque头部和尾部添加或移除元素都非常快速。但是在中部安插元素或移除元素比较费时。2.deque使用之前的...原创 2018-06-13 18:22:04 · 552 阅读 · 0 评论 -
【C++】:STL标准库之set/multiset (pair & functor)
set/multiset1.简介set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。 set采用红黑树变体的数据结构实现,红黑树属于平衡二叉树。在插入操作和删除操作上比vector快。 set不可以直接存取元素。(不可以使用at.(pos)与[]操作符)。 multiset与set的区别:set支持唯一键值...原创 2018-06-14 09:38:04 · 775 阅读 · 0 评论 -
【C++】:STL标准库之map/multimap
map/multimap1.简介map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对。它提供基于key的快速检索能力。 map中key值是唯一的。集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。 map的具体实现采用红黑树变体的平衡二叉树的数据结构。在插入操作和删除操作上比vector快。 map可以直接存取key所对应的...原创 2018-06-14 10:40:22 · 526 阅读 · 0 评论 -
【C++】:STL容器总结以及算法(algorithm)介绍
容器的共通能力所有容器提供的都是值(value)语意,而非引用(reference)语意。容器执行插入元素的操作时,内部实施拷贝动作。所以STL容器内存储的元素必须能够被拷贝(必须提供拷贝构造函数)。除了queue与stack外,每个容器都提供可返回迭代器的函数,运用返回的迭代器就可以访问元素。通常STL不会丢出异常。要求使用者确保传入正确的参数。每个容器都提供了一个默认构造函数跟一个...原创 2018-06-14 12:09:33 · 2586 阅读 · 0 评论 -
【C++】:引用
引用就是对象的另一个名字,实际应用中引用主要用作函数的形式参数。//正确int ival = 1024;int &refcal = ival;//错误int &refval; //错误原因:引用在定义的时候必须初始化int &refval = 10;//错误原因:引用必须是一个变量(对象)引用是变量的别名,所以对引用进行操作时,实质是对引用的那个变...原创 2018-06-08 22:22:16 · 279 阅读 · 0 评论 -
【C++】:typedef & 枚举 & inline(内联函数) & static(静态变量)
typedef作用用来定义类型的同义词,并没有引入新的类型。目的为了隐藏特定类型的实现,强调使用类型的目的。使类型定义更容易理解。枚举简介枚举的第一个成员赋值为0,后面的成员比前一个值大1。例子enum Week{ sun, Mon = 5, Tue, Wed};//其中sun=0;Tue=6,Wed=7...原创 2018-06-09 19:17:20 · 546 阅读 · 0 评论 -
【C++】:指针
指针1.指针初始化(3种情况)//初始化空指针(一般用Null)int *P = Null;//初始化同类型变量的地址int ival = 2;int *P = &ival;//初始化同类型的另一个有效指针int ival = 2;int *P = &ival;int *p2 = P;2.void* 指针特点: 可以保存任何类型对象的地址 vo...原创 2018-06-09 19:29:45 · 289 阅读 · 0 评论 -
学习深度学习框架源码有感 | 指针数组,数组指针结束篇
在上一篇文章学习深度学习框架源码有感 | 反正我不会C语言中,介绍了数组和多维数组名所代表的含义,及其和数组指针间的联系。本文将把多维数组剩余的内容介绍一下,并且讲一下文章指针篇 | 教你把多级指针玩弄于鼓掌中讲过的二级指针模型中的第一种模型指针数组的应用。之所以讲指针数组一方面是它容易和我们在文章学习深度学习框架源码有感 | 反正我不会C语言中提到过的数组指针搞混,另一方面,指针数组有着其强大的...原创 2019-07-06 14:53:27 · 336 阅读 · 0 评论