
C\C++
文章平均质量分 58
梧桐栖鸦
opencv系列教程代码已上传至github:https://github.com/keithMaybe/code/tree/master/opencv
以后更新会继续上传
CUDA、Python、ML努力填坑中>>>
展开
-
C++利用函数调用实现数组数据的输入输出
源代码如下:#include using namespace std;const int ArraySize = 5;void arraytestinput(int arrayinput[]){ cout << "Please Enter " << ArraySize << "numbers :" << endl; for (int i = 0; i < ArraySize; i原创 2016-03-01 22:09:39 · 5220 阅读 · 0 评论 -
C语言预处理及特殊函数介绍(extern/exit/atexit/volatile/static/calloc/realloc等)PART ONE
1).#include 预处理命令#include 命令有如下两种形式:#include #include "filename"它们的差别在于查找欲包含文件的起始位置不同。用引号括起来:预处理程序就会从待编译文件所在待编译目录里开始查找欲包含的文件,这种方法通常用于包含程序员定义的头文件。用2).条件编译条件编译使用户能够控制预处理命令的执行以及对程序代码原创 2015-12-10 22:31:55 · 739 阅读 · 0 评论 -
fopen和fopen_s的区别
fopen:原型:FILE * fopen(const char * path,const char * mode);接收两个实参返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。示例程序源码:FILE *cfPtr; if((cfPtr = fopen("test.原创 2015-11-26 22:51:46 · 82918 阅读 · 0 评论 -
argc和*argv[]函数简记
代码如下:int main(int argc, char *argv[]){FILE *in, *out;int ch;char name[20];int count=0;if(argc < 2){fprintf(stderr, "Usage:%s filename\n", argv[0]);exit(1)}}第一个int argc 是记录输入在命令行的字符串个数,c原创 2015-12-28 23:02:13 · 1628 阅读 · 0 评论 -
C++多线程系列(二)线程互斥
首先了解一下线程互斥的概念,线程互斥说白了就是在进程中多个线程的相互制约,如线程A未执行完毕,其他线程就需要等待!线程之间的制约关系分为间接相互制约和直接相互制约。所谓间接相互制约:一个系统中的多个线程必然要共享某种系统资源如共享CPU,共享打印机。间接制约即源于资源共享,线程A在打印的时候其他线程就要等待,否则打印的数据将变得非常混乱。间接相互制约称为互斥,互斥是同步的一种特殊形式直原创 2016-06-30 20:23:05 · 8558 阅读 · 5 评论 -
C语言中二维数组的问题
C语言中关于二维数组的处理:1.判断二维数组行列的长度方法一:程序员在编写二维数组时直接定义二维数组行列的长度,建议利用宏定义对二维数组行列的长度进行定义,方便在以后对程序维护时进行更改。方法二:利用sizeof函数获取数组行列的长度。例如定义一个二维数组:arraryTest[2][3];arrary[2][3];sizeof(arrary); /*整个数组原创 2015-12-08 22:22:56 · 4666 阅读 · 1 评论 -
程序命令行argc\argv
在一些程序中会看到这样的定义int main(int argc, char **argv) 或int main(int argc, char *argv [])这样的写法在一些C\C++会经常看到,现在对这两个参数做一个解释。 在上述代码行中argc表示命令行输入参数的个数(以空白符分隔),argv中存储了所有命令行的参数。这里的命令行不是指在IDE输入什么命令,而是在Windows的DOS和原创 2016-10-25 22:13:22 · 3322 阅读 · 0 评论 -
C\C++中计时、延时函数
C\C++标准库中提供了两种计时函数clock()和time()。其用法如下: (1)clock()函数用法void timeConsume(){ double start,stop,durationTime; start = clock(); /* ...代码片段 */ stop = clock(); durationTime原创 2016-11-06 18:25:13 · 101691 阅读 · 2 评论 -
Linux下gdb调试用法命令
一直在Fedora平台下写opencv的程序,需要对程序进行调试,主要用的调试工具是gdb. gdb提供了如下功能:1.在程序中设置断点,Debug时遇到断点处暂停2.可以监视某个变量,并利用print函数将该变量的值打印出来3.程序可step-by-step执行4.运行时修改变量的值5.跟踪路径6.线程切换等 下面结合OpenCV针对C\C++程序使用gdb调试进行介绍。原创 2017-02-15 22:32:00 · 33983 阅读 · 0 评论 -
C++多线程系列(一)CreateThread和_beginthreadex区别
现在在学习多线程,顺便将搜集到的资料整理下来以供参考和查询。首先在开始多线程学习的时候遇到的首要问题便是多线程的创建,在查阅资料后有CreateThread和_beginthreadex两种方法,可能不止这两种,以后学习到了再补充。原创 2016-06-29 11:10:32 · 3274 阅读 · 0 评论 -
C语言预处理及特殊函数介绍(extern/exit/atexit/volatile/static/calloc/realloc等)PART TWO
8).使用exit和atexit终止程序通用工具库提供了除从main函数正常返回之外的其他一些终止程序运行的方法如函数exit和atexit。exit函数强制终止程序的运行就好像正常运行结束一样。当检测到一个输入错误或者欲处理的文件无法打开时,常常使用exit函数来结束程序运行。atexit函数注册一个函数,这个函数必须在程序成功结束时调用——要么是程序执行到了main函数的末尾,要么原创 2015-12-12 22:02:20 · 864 阅读 · 0 评论 -
const限定符
const:把变量声明转变为常量声明成为只读值。在程序的多个地方使用同一个常量而需要修改该常量值,只需通过修改const声明常量的值即可。如在程序中使用MONTHS标示月份const int MONTHS = 12;这样就可以在程序中使用MONTHS而不是12了,若修改程序中月份的值只需将上述语句中对应的数值改为相应数值即可。*注意:应在声明中直接对const进行初始化。如下:原创 2016-02-28 21:10:32 · 698 阅读 · 0 评论 -
C/C++文件管理fopen()、fread()
1.fread原型:_ACRTIMP size_t __cdecl fread( _Out_writes_bytes_(_ElementSize * _ElementCount) void* _Buffer, _In_ size_t _ElementSize, _In_原创 2016-04-11 10:31:20 · 9961 阅读 · 1 评论 -
String类的输入和输出及基本操作
#include #include using namespace std;const int StringSize = 20;int main(void){ char stringclass1[StringSize]; char stringclass2[StringSize]; cout << "Enter stringclass1: "; cin.get(stringcl原创 2016-03-01 22:59:22 · 6291 阅读 · 0 评论 -
C++学习之继承和派生
继承和派生是C++与C不同的重要特征之一。继承:保持已有类的特性而构造新类的过程。意义为子类继承了父类中public和protected属性的成员,同时又有自己特征的一些成员。派生:在已有类的基础上新增自己的特性而产生新类的过程。增加继承和派生能够实现代码重用,减少工作量。继承规则:基类或父类中的public和protected成员被继承,而private成员不能被继承。原创 2016-03-02 21:25:04 · 541 阅读 · 0 评论 -
C++基础概念OOA、OOD、OOP
OOA:Object-Oriented Analysis面向对象分析OOA可分为共主题层、对象类层、结构层、属性层和服务层等5个层次和标示对象类、标示结构、定义主题、定义属性和定义服务等5个活动组成。OOA的主要原则:(1)抽象:从许多十五中舍弃个别的、非本质的特征,抽取共同的、本质性的特征就叫抽象。抽象是形成概念的必须手段,数据抽象是OOA的核心原则。它强调吧数据(属相)和操作(服务原创 2016-02-28 20:47:28 · 3128 阅读 · 0 评论 -
C++输入输出的关键字:getline、get
1.cout.put():是一个重要的C++ OOP概念,可以代替“char a = 'M';cout << a;cout.put(a);输出结果相同。2.getline()getline()函数读取整行,它使用通过回车键输入的换行符来确定输入结尾。可以使用cin.getline()来调用这种方法。getline()有两个参数,第一个参数是用来存储输入行的数组的原创 2016-02-28 22:11:18 · 3230 阅读 · 0 评论 -
函数重载
函数实现重载的关键是函数的参数列表(函数特征标)。如果两个函数的参数数目和类型相同,同事参数的排列顺序也相同,则它们的特征标相同,二变量名是无关紧要的。C++允许定义名称相同的函数,条件是它们的特征标不同。函数匹配时,函数参数变量为const可以引用const类型或非const类型,若函数参数类型为非const类型则只能引用非const类型不能引用const.原创 2016-04-08 15:18:14 · 435 阅读 · 0 评论 -
strcpy_s函数
C++标准中使用了更为安全的strcpy_s函数,让人蛋疼的是为毛不直接更新strcpy函数,非要加_s,可能是为了兼顾旧的工程。不管怎样该用还得用strcpy_s包含在头文件中,亲测也可,反正就改个名,其定义如下: _ACRTIMP errno_t __cdecl strcpy_s( _Out_writes_z_(_SizeInBytes) char* _De原创 2016-05-06 17:54:13 · 144219 阅读 · 9 评论 -
opencv实现多图像读取并显示,sprintf_s函数,static_cast
基于opencv和C++实现多幅图像的加载,程序中需要将文件统一命名,而且文件名最后一定是数字,还未实现对字符文件名图像的加载。首先介绍一个函数sprintf_s,sprintf_s是sprintf函数的安全版本,是新的C++标准对sprintf函数进行的改进,通过指定缓冲区长度来避免sprintf()存在的溢出风险,其函数原型如下:sprintf_s( _Out_writ原创 2016-09-12 19:58:36 · 7552 阅读 · 0 评论 -
atan和atan2函数的一点区别
在头文件中包含有大量的数学计算函数,今天碰巧用到反正切函数atan和atan2计算斜率,简单说一下这两个函数用法上的一点区别:float angle=atan(y/x);float angle=atan2(y,x);两点区别:1.参数的填写方式不同2.当x为0时,函数atan2依然可以计算,而atan函数会报错导致程序出错在使用时推荐尽量使用atan2函数原创 2016-05-04 19:32:42 · 7278 阅读 · 0 评论 -
腾讯2017秋招笔试编程题之素数
题目描述: 给定一个正整数,编写程序计算有多少对质数的和等于输入的这个正整数,并输出结果。输入值小于1000。 如,输入为10, 程序应该输出结果为2。(共有两对质数的和为10,分别为(5,5),(3,7))问题分析: 1. 明确素数的概念,素数即除了能被1和本身整除外,不能被其他数整数的自然数 2. 题目中限定输入为正整数,故可使用int类型变量接受输入值,对于正整数和小于1000的限定原创 2017-08-31 23:07:10 · 3732 阅读 · 2 评论