c++
文章平均质量分 87
like_study_cat
这个作者很懒,什么都没留下…
展开
-
Window10上CLion配置
或许,你是嫌弃VS太麻烦,操作不方便。或许,你是习惯了IDEA的开发。总之,你就是心血来潮想试试CLion。我相信,看到这篇教程的读者可能已经被CLion搞烦了,什么MinGW,Cygwin都是什么鬼,下载慢的要命,安装慢的要命,各种烦。在本人努力爬坑的情况下,总算找到了一种极简的方法。不说了,进入正题。Window10上CLion极简配置教程1. 首先,下载安装CLion去JB公司官网下载CLion,https://www.jetbrains.com/clion/download/#原创 2021-01-15 13:43:55 · 1509 阅读 · 0 评论 -
学C++要看的书
初级阶段:1. C++基础语法:《C++ Primer 第五版》C++语法太过繁杂,很多语法特性一辈子也用不上。对于初学者来说,学完前7章就能写简单的程序。2. 数据结构和算法:《大话数据结构》这实在是一本对新手非常友好的书,暂时先看完前5章就够了。此时应该多做一些练习,可以是简单的小软件或小游戏。3. C++标准库:《C++ Primer 第五版》没错还是这本书,之前7章学了基础语法。现在继续学习8~12章,涵盖了标准库常用组件的基本用法。想完整学习标准库的同学可以在未..转载 2020-12-30 11:37:47 · 275 阅读 · 0 评论 -
C++和python
说C++变得越来越像Python,可能有点过分,只不过是对比学习而已,请勿见怪!字面量static const int primes = 0b10100000100010100010100010101100;1原始字符串Python中:path = r'c:\noway'1C++中const char* path = R"(c:\this\string\has\backslashes)";1基于范围的循环Python中:for x in myList:转载 2020-12-30 11:33:24 · 82 阅读 · 0 评论 -
常用数据结构总结
前言 所有的容器归根到底都是内存空间的排列方式和在空间上施加各种各种不同的限制所得的。空间排列方式只有线性和链式两种方式,链式是通过记录每一个数据的地址来实现查找下一位数据的。而每一个容器所具有的特性就决定了它所适用的情况,总的来看容器常用的无非是增删改查操作,下面将从适用场景、常用操作来进行总结。 array数组 内存空间为连续的一段地址,适用于提前已知所要存储的数据类型和数量、进行大量的查、改操作,不适用于含有大量交换、删除、增加数据的操作,该容器无法动态改变大小,所以说提前已知存储数..转载 2020-12-30 11:12:17 · 94 阅读 · 0 评论 -
动态库与静态库的调用
目录静态库什么是静态库?怎么创建如何使用静态库的第一种使用方法静态库的第二种使用方法动态链接库动态库是什么?怎么创建如何使用隐式调用显式调用静态库什么是静态库?我们先来说一下什么是静态库,维基百科对其的解释是这样的:在计算机科学里,静态库(英语:Static library, Statically-linked library),或称静态库,是一个外部函数与变量的集合体。静态库的文件内容,通常包含一堆程序员自定的变量与函数,其内容不像动.原创 2020-10-10 01:05:46 · 2089 阅读 · 0 评论 -
C语言--指针一般在什么时候需要申请内存空间
1. 指针所指向的地址需要存放数据的时候需要申请空间。int *q;只有地址,没有内存空间。这个地址是随机地址。(1)没有申请内存空间: int *q; *q = 1; cout<<*q<<endl;错误! 指针变量q没有空间,不能直接存放数据。(2)申请内存空间:int *q = new int;*q = 1;cout<<*q<<endl;正确,存放数据之前给指针变量申请了一个int类型转载 2020-10-10 00:47:49 · 3481 阅读 · 0 评论 -
为指针指向的内存赋值
char **temp_pointer=NULL; temp_pointer=(char **)malloc(sizeof(char *) * number); // 申请内存空间 if(temp_pointer==NULL) // 申请内存空间失败则退出 { fclose(fp1); return -1; } for(i=0; i<number; i++) { //为指针指向的内存赋值 temp_pointer[i]=(char *)malloc(siz...原创 2020-10-10 00:38:05 · 492 阅读 · 0 评论 -
为p指向空间赋值
为p指向空间赋值[c]代码库/* 使用calloc来为数组申请空间 */#include <stdio.h>#include <stdlib.h>#define SIZE 5 int main(void) { int *p = NULL; int i = 0; /* 为p从堆上分配SIZE个int型空间 */ p = (int *) calloc(SIZE, sizeof(int)); /* 检查p的分配结果 */原创 2020-10-10 00:24:58 · 142 阅读 · 0 评论 -
(C++)函数参数传递中的一级指针和二级指针
主要内容:1、一级指针和二级指针2、函数指针传递的例子3、什么时候需要传递二级指针?4、二级指针在链表中的使用1、一级指针和二级指针一级指针:即我们一般说的指针,就是内存地址;二级指针:指向指针的指针,就是地址的地址;如:int a=1;int *p=&a; // p为a变量的地址,通过*p可以得到a的值int **q=&p; // q为p指针的地址,通过**q可以得到a的值2、函数指针传递的例子程序1: #include.原创 2020-10-09 00:48:20 · 481 阅读 · 0 评论 -
二级指针和指针引用函数传参(C++)
在函数的使用过程中,我们都明白传值和传引用会使实参的值发生改变。那么能够通过传指针改变指针所指向的地址吗?在解决这个问题之前,也许我们应该先了解指针非常容易混淆的三个属性:①.指针变量地址(&p)②.指针变量指向的地址(p,存储数据的地址)③.指针变量指向的地址的值(*p)当我们将指针变量与其它变量比较之后就会发现,指针变量同其它变量是相似的,只是多了最后一种操作。比如一个int类型的变量,int x=5;&x取出存储5这个数据的地址,同样,&p也是存储指针的地址,p就是转载 2020-10-09 00:34:03 · 691 阅读 · 0 评论 -
struct与指针
#include<stdio.h> #include<stdlib.h> //一级指针的用途:简介访问结构体,创建一个堆上个变量,储存这个变量的地址 struct info { int num; float score; }; void main1() { //如何构建一个指针变量访问结构体info struct info info1;//构建一个变量in...原创 2020-10-09 00:15:32 · 2267 阅读 · 0 评论 -
struct
结构体很重要,初学者一定要掌握。比如存储一个班级学生的信息,肯定包括姓名、学号、性别、年龄、成绩、家庭地址等项。这些项都是具有内在联系的,它们是一个整体,都表示同一个学生的信息。但如果将它们定义成相互独立的变量的话,就无法反映它们的内在联系:char name[20]; //姓名int num; //学号char sex; //性别int age; //年龄float score; //成绩char addr[30]; //家庭住址而且问题是这样写的话,只是定义了一个学生,如果.原创 2020-10-08 21:49:01 · 153 阅读 · 0 评论 -
数组元素首地址和数组首地址
int main(){ int arr[10] = {0}; printf("数组元素首地址 :%d\n",arr); //数组元素首地址 2293280 printf("数组首地址 :%d\n",&arr); //数组首地址 2293280 printf("数组元素首地址+1 :%d\n",arr+1); //数组元素首地址 2293284 printf("数组首地址+1 :%d\n",&arr+1); //数组首地址 2293320 retu.原创 2020-10-07 21:38:16 · 2933 阅读 · 0 评论 -
C/C++申请和释放内存
new 和 delete 是 C++ 用于管理堆内存的两个运算符,对应于C语言中的 malloc 和 free,但是 malloc 和 free 是函数,而new 和 delete 是运算符。除此之外,new 在申请内存的同时,还会调用对象的构造函数,而 malloc 只会申请内存;同样,delete 在释放内存之前,会调用对象的析构函数,而 free 只会释放内存。###C++new运算符申请内存:将调用相应的 operator new(size_t) 函数动态分配内存,在分配到的动态内存块上原创 2020-10-07 18:25:53 · 632 阅读 · 0 评论 -
c++中的c_str()用法
语法: const char *c_str();c_str()函数返回一个指向正规C字符串的指针, 内容与本string串相同.这是为了与c语言兼容,在c语言中没有string类型,故必须通过string类对象的成员函数c_str()把string 对象转换成c中的字符串样式。注意:一定要使用strcpy()函数 等来操作方法c_str()返回的指针1、比如:最好不要这样:char* c;string s="1234";c = s.c_str(); //c最后指向的内容是垃...原创 2020-10-06 20:39:21 · 110 阅读 · 0 评论 -
getopt_long 函数解析命令行参数时的 struct option
staticconststructoptionoptions[]={{"help",no_argument,NULL,'h'},{"output",required_argument,NULL,'o'},{"level",required_argument,NULL,'l'},{"size",required_argument,NULL,'s'},{"symversion",...原创 2020-10-06 20:19:48 · 259 阅读 · 0 评论 -
getopt和getopt_long的使用方法
getopt(分析命令行参数) 相关函数 表头文件 #include<unistd.h> 定义函数 int getopt(int argc,char * const argv[ ],const char * optstring); extern char *optarg; extern int optind, opterr, optopt; 函数说明 getopt()用来分析命令行参数。参数argc和argv是由main()传递的参数个数和内容。参数 optstri.原创 2020-10-06 20:08:02 · 224 阅读 · 0 评论 -
switch用法
当程序的一部分导致另一部分执行时,会发生分支。if-else if 语句允许程序分支到几个可能的路径之一,当这些测试之一成立时,它执行一系列测试(通常是关系)和分支。switch 语句是一个类似的机制,但是它测试的是整数表达式的值,然后使用该值来确定要分支到哪一组语句,以下是 switch 语句的格式:switch只能接受整型和字符型:整型:#include <iostream>using namespace std;int main(void){ int a;原创 2020-10-06 18:48:47 · 224 阅读 · 0 评论 -
智能指针
unique_ptr 是 C++ 11 提供的用于防止内存泄漏的智能指针中的一种实现,独享被管理对象指针所有权的智能指针。unique_ptr对象包装一个原始指针,并负责其生命周期。当该对象被销毁时,会在其析构函数中删除关联的原始指针。unique_ptr具有->和*运算符重载符,因此它可以像普通指针一样使用。查看下面的示例:#include <iostream>#include <memory>struct Task { int mId; Ta转载 2020-10-04 23:37:55 · 49 阅读 · 0 评论 -
C++ main函数命令行参数使用
1. C/C++语言中的main函数,经常带有参数argc,argv,如下:int main(int argc, char** argv)int main(int argc, char* argv[])C语言还规定argc(第一个形参)必须是整型变量,argv(第二个形参)必须是指向字符串的指针数组。加上形参说明后,main函数的函数头应写为:main(intargc,char*argv[])2. 由于main函数不能被其它函数调用,因此不可能在程序内部取得实际值。...转载 2020-10-04 22:35:38 · 1951 阅读 · 0 评论 -
c++define的用法
在写程序时经常会碰到这样一个问题,我们需要重复写很多相同的代码,并且这些代码结构相同。总是想自己把这段代码封装一下然后直接进行调用,但是如果这段代码逻辑并不复杂,并且代码量也不大,不适合进行封装,那么我们就会想到c++中的关键字define。其实明智的你,遇到上面的这些情况估计还会想到另一个东西----template,后面我们也会说一下两者的却别。今天自己看了一下c++ define的相关知识,做个记录。 1.什么是define: 宏定义,简单的理解就是替换,其实这也是本质。如果熟悉g++编译过程的转载 2020-10-03 15:28:10 · 6841 阅读 · 0 评论 -
c++中extern用法
c++中extern用法extern关键字的作用是共享代码。一个c++程序可以包含多个文件,在一个文件中已定义的变量,如果要在另一个文件中调用,就要先声明一下变量,此时用extern这个关键字来声明。(注意:在一个程序中,变量只能被定义一次,但可以多次声明)区分是定义还是声明关键在于看计算机是否为变量分配了存储空间。int i; //这是定义extern int i; //...原创 2020-04-11 11:53:05 · 228 阅读 · 0 评论 -
C++继承
C++ 继承面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行效率的效果。当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类。继承代表了 is a 关系。例如,哺乳动物是动物,狗是哺乳动物,因此...原创 2020-04-11 11:41:24 · 179 阅读 · 0 评论 -
C++中public、protected、private的区别
C++中public、protected、private的区别三种访问权限public:可以被任意实体访问protected:只允许子类及本类的成员函数访问private:只允许本类的成员函数访问private: 只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问.protected: 可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问...原创 2020-04-11 11:30:55 · 232 阅读 · 0 评论 -
opencv对于.at(j, i) 和.at(Point(j, i)) 的区别
srcImage.at<uchar>(j, i) //表示的是 j 行 i 列 的这个像素 srcImage.at<uchar>(Point(j, i)) //表示的是 坐标(j,i)的像素为了我下面的图方便说明 j 换成 x , i 换成 y 。也就是说:srcImage.at<uchar>(x, y) //表示的是 x 行 y 列 的...转载 2020-03-25 17:39:29 · 360 阅读 · 0 评论 -
opencv中用RNG产生随机数
1.1 RNG RNG类是opencv里C++的随机数产生器。它可产生一个64位的int随机数。目前可按均匀分布和高斯分布产生随机数。随机数的产生采用的是Multiply-With-Carry算法和Ziggurat算法。1.1.1 产生一个随机数RNG可以产生3种随机数RNG(int seed) 使用种子seed产生一个64位随机整数,默认-1RNG::uniform...转载 2020-03-25 15:08:53 · 259 阅读 · 0 评论 -
C++ STL(标准模板库)
C++ STL(标准模板库)C++ 语言的核心优势之一就是便于软件的重用。C++ 中有两个方面体现重用:一是面向对象的继承和多态机制;二是通过模板的概念实现了对泛型程序设计的支持。C++ 的标准模板库(Standard Template Library,STL)是泛型程序设计最成功应用的实例。STL 是一些常用数据结构(如链表、可变长数组、排序二叉树)和算法(如排序、查找)的模板的集合,...原创 2020-03-13 15:59:29 · 156 阅读 · 0 评论 -
C++静态成员变量和静态成员函数详解
C++静态成员变量和静态成员函数详解类的静态成员有两种:静态成员变量和静态成员函数。静态成员变量就是在定义时前面加了 static 关键字的成员变量;静态成员函数就是在声明时前面加了 static 关键字的成员函数。下面的 CRectangle 类就有两个静态成员变量和一个静态成员函数。class CRectangle{private: int w,h; static in...原创 2020-03-13 14:10:11 · 284 阅读 · 0 评论