❸ C/C++
谙忆
Java相关研发架构工作经验5年。拥有Java相关发明专利8余项。从事过支付行业,研发与架构的系统稳定地支撑着公司日千万交易笔数量级的支付和对账。
二手车SaaS内核研发3年经验+,拥有二手车行业SaaS相关发明专利6项,研发、架构的元数据内核与权限系统,每日亿万级接口调用。
Java企业开发丰富的理论知识和实战经验。2020年CSDN博客之星第12名,同时在一些社区担任名誉职位。认证为CSDN博客专家、CSDN专栏签约作者、InfoQ签约作者、阿里云ACE杭州同城会会长、阿里云社区认证专家、华为云·云享专家。
展开
-
【C++】定义自己的String类
我们自己写的String类具有以下函数 1.构造函数String(const char *s); //用c字符串s初始化String(int n,char c); //用n个字符c初始化2.拷贝和赋值String& String(String& str);const String& operator=(String& str);3.析构函数~String();4.下标访问重载下标原创 2018-01-27 19:07:08 · 3541 阅读 · 0 评论 -
strcmp函数实现及分析
最近看C,看到strcmp函数,对它的实现原型不很清楚,于是到网上搜。网上算法一大堆,看了很多代码后自己做了一下总结 strcmp函数是C/C++中基本的函数,它对两个字符串进行比较,然后返回比较结果,函数形式如下:int strcmp(const char* str1, const char* str2);其中str1和str2可以是字符串常量或者字符串变量,返回值为整形。返回结转载 2015-08-21 14:30:42 · 1475 阅读 · 0 评论 -
指针变量的运算
指针变量的运算 指针变量可以进行某些运算,但其运算的种类是有限的。 它只能进行赋值运算和部分算术运算及关系运算。 1.指针运算符(1)取地址运算符& 取地址运算符&是单目运算符,其结合性为自右至左,其功能是取变量的地址。在scanf函数及前面介绍指针变量赋值中,我们已经了解并使用了&运算符。(2)取内容运算符* 取内容运算符是单目运算符,其结合性为自右至左,用来表示指针变量所指转载 2015-08-24 10:42:47 · 1892 阅读 · 0 评论 -
递归简论
/**f(x)=2f(x-1)+x^2;f(0)=0;**/#include <stdio.h>#include <stdlib.h>int f(unsigned int x){ if(x==0) return 0;//处理基准情况 //基准情形:你必须总要有某些基准的情形,它们不用递归就能求解 else return 2*f(x-1)原创 2015-08-26 16:12:09 · 1364 阅读 · 0 评论 -
c语言运算符号详细说明
C语言中的符号 运算符的种类 语言的运算符可分为以下几类: 1 算术运算符 用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(–)共七种。 2.关系运算符 用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=) 、小于等于(<=)和不等于(!=)六种。 3.逻辑运算符 用于逻辑运算。包括与(&&)、或(||原创 2015-08-27 16:20:47 · 5319 阅读 · 0 评论 -
HDOJ 1716 排列2(next_permutation函数)
这是一个求一个排序的下一个排列的函数,可以遍历全排列,要包含头文件 下面是以前的笔记 与之完全相反的函数还有prev_permutation (1) int 类型的next_permutation int main() { int a[3]; a[0]=1;a[1]=2;a[2]=3; do { cout<#include < iostream >#include <原创 2015-08-27 16:33:26 · 1798 阅读 · 0 评论 -
C++栈和队列
使用标准库的栈和队列时,先包含相关的头文件#include<stack>#include<queue>定义栈如下:stack<int> stk;定义队列如下:queue<int> q;栈提供了如下的操作s.empty() 如果栈为空返回true,否则返回false s.size() 返回栈中元素的个数 s.pop()原创 2015-08-28 10:46:04 · 2936 阅读 · 0 评论 -
【算法入门】广度/宽度优先搜索(BFS)
广度/宽度优先搜索(BFS)【算法入门】1.前言广度优先搜索(也称宽度优先搜索,缩写BFS,以下采用广度来描述)是连通图的一种遍历策略。因为它的思想是从一个顶点V0开始,辐射状地优先遍历其周围较广的区域,故得名。 一般可以用它做什么呢?一个最直观经典的例子就是走迷宫,我们从起点开始,找出到终点的最短路程,很多最短路径算法就是基于广度优先的思想转载 2015-08-28 10:54:09 · 1794 阅读 · 0 评论 -
malloc函数详解
一、原型:extern void *malloc(unsigned int num_bytes);头文件:#include 或 #include (注意:alloc.h 与 malloc.h 的内容是完全一致的。)功能:分配长度为num_bytes字节的内存块说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。当内存不再使用时,应使用free(转载 2015-09-07 10:58:31 · 1370 阅读 · 0 评论 -
HDOJ1020 Encoding
Problem Description Given a string containing only ‘A’ - ‘Z’, we could encode it using the following method: Each sub-string containing k same characters should be encoded to “kX” where “X” is the on原创 2015-09-07 16:06:28 · 1537 阅读 · 0 评论 -
结构体类型定义的一般式
struct 结构体名{ 类型名1 域名1; 类型名2 域名2; 类型名3 域名3; 类型名4 域名4; ... ... 类型名n 域名n;};说明:结构体类型是用户自定义类型,使用时需要按照规定的形式定义类型标识符,然后才能定义相应类型的变量。例如:struct student/**定义了一个结构体类型,类型标识符为 struc原创 2015-09-08 19:53:14 · 1619 阅读 · 0 评论 -
struct和typedef struct
“`typedef声明,简称typedef,为现有类型创建一个新的名字,或称为类型别名,在结构体定义,还有一些数组等地方都大量的用到。 比如: typedef int DataType; 给整型int起了一个新名字DataType,以后用DataType就如同int一样。 分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef:原创 2015-09-08 20:07:46 · 1224 阅读 · 0 评论 -
HDOJ 1004题 Let the Balloon Rise strcmp()函数
Problem DescriptionContest time again! How excited it is to see balloons floating around. But to tell you a secret, the judges' favorite time is guessing the most popular problem. When the contest i原创 2015-08-21 14:38:46 · 1830 阅读 · 0 评论 -
C语言---递归反向输出任意长度的字符串
(该字符串可以包含空格和回车!) 【题目要求】 编写一个递归函数,实现将输入的任意长度的字符串反向输出的功能。 例如输入字符串:ABCD,输出字符串:DCBA。【题目分析】 应用递归的思想有时可以很轻松地解决一些看似不太容易实现的功能。 本题就是利用递归方法解决这类问题的一个代表。要将一个字符串反向地输出,一般采用的方法是将该字符串存放到一个数组中,然后将数组元素反原创 2016-04-22 19:02:58 · 12725 阅读 · 0 评论 -
【C++】流插入、提取运算符和类型转换
流插入,流提取运算符重载和类型转换的讲解和实例重载流插入和提取运算符的运算符函数,不能作为类的成员函数,只能作为普通函数 流插入,流提取运算符重载流插入运算符”<<”和流提取运算符”>>”也可以被用来重载。 我们可以使用cout对一个int,string等等类型的数据进行输出,我们却不可以对我们自己定义的一个类的对象进行直接输出,因为我们这个类是没有”<<”运算符的。 “<<”运算符是有两个操原创 2017-09-22 09:38:24 · 8269 阅读 · 0 评论 -
【C++】成员函数重载二元和一元运算符
重载双目运算符时,运算符函数中应该具有两个参数,若运算符函数作为类的成员函数(当运算符重载函数作为类的成员函数时,要求操作数左边必须是一个对象,而函数的参数可以是同类的对象也可以是普通的变量),则只需要一个参数。 双目运算符双目运算符就是具有两个操作数的运算符。如 +、-、==等。对双目运算符而言,成员函数重载运算符的函数参数表中只有一个参数,而用友元函数重载运算符函数参数表中含有两个参数。 成原创 2017-09-22 09:37:28 · 4301 阅读 · 0 评论 -
【C++】C++运算符重载的规则
本篇博客讲解: 运算符重载的规则,以及实例 运算符重载的规则被重载的运算符必须是已经存在的C++运算符,不能重载自己创建的运算符。 运算符被重载之后,原有功能仍然保留。只是扩展了原有功能。 重载不能改变运算符运算对象的个数。 +运算符具有两个操作数,在+运算符函数作为类(例如上个例子中的CTime)的成员函数的时候,有一个参数是隐含的,也就是当前的对象,使用this指针来引用。 另一个参原创 2017-09-22 09:35:45 · 2168 阅读 · 0 评论 -
【C++】C++运算符重载-基础
本篇博客讲解: 运算符重载基础,以及实例 运算符重载基础运算符重载就是对已有的运算符赋予新的含义,实现新的功能。 运算符重载,如“+”,它可以对int、float、string类型进行加法运算。 “<<”是C++中的左移运算符,但是在输出操作中与cout配合被称为流插入运算符,可以进行输出。 “>>”是右移运算符,与cin配合使用被称为流提取运算符。 它们都被称为运算符重载。 我们也可原创 2017-09-03 00:18:57 · 1296 阅读 · 0 评论 -
【C++】C++友元
C++中可以使用friend关键字来将函数、类声明为某个类的友元 友元包括友元函数和友元类 友元具有一些特权,可以访问private的成员 友元只能授予,不能索取,单向,不能传递(比如a是b的友元,b是c的友元,但a不是c的友元) 友元函数在类体中使用friend关键字对友元函数进行声明: 将非成员函数/一般函数声明为友元: friend void func(); //func为非成员原创 2017-08-21 21:59:47 · 1426 阅读 · 0 评论 -
【Cocos2d-x】开发基础-Cocos简介与环境搭建
本篇博客讲解: Cocos2d-x介绍与环境搭建 1.移动平台游戏引擎介绍 2.Cocos2d家谱介绍 3.Cocos2d-x设计目标 4.在Windows平台下开始开发Cocos2d-x游戏移动平台游戏引擎介绍游戏引擎的定义游戏引擎包含以下子系统移动平台游戏引擎中主要可以分为2D引擎主要有3D引擎主要有HTML 5的游戏引擎Cocos2d家谱介绍Cocos2d-x设计目标原创 2017-06-26 22:05:06 · 8411 阅读 · 1 评论 -
【C++】This指针和复制构造函数
在声明一个类的时候,是没有分配存储空间的,只有在真正定义一个对象的时候,程序才会为这个对象分配相应的存储空间。 如果定义了多个对象,这些对象都有自己的存储空间,但是这些对象都是用相同的成员方法的。 当不同的对象调用成员方法时,怎么保证就是这个对象的成员?this指针在每个成员函数中,都包含一个特殊的指针。 这个指针的名字是固定的,就是this指针。 this指针是指向类对象的指针,它的值是当原创 2017-06-26 20:52:47 · 2174 阅读 · 0 评论 -
【C++】C++类的静态成员
类的静态成员包括静态的数据成员和静态的成员函数! static关键字静态数据成员比如我们现在要设计一款战争游戏,在这款游戏中,分为多个兵种,每个兵种都有一定数量的士兵,游戏过程中,每隔一定时间每个兵种都会产生一定数量的士兵,由于战争的消耗,每个兵种的士兵都会减少。 为了使情节更逼真,引入了士气这个概念,当士气比较高的时候,这个兵种的战斗力就比较强,士气低的时候,这个兵种的战斗力就比较弱。 士兵原创 2017-06-26 20:52:17 · 1543 阅读 · 0 评论 -
【C++】const对象和const成员
如果我们在定义一个对象之后,不希望在后面对这个对象进行修改,那么我们可以把这个对象声明为const对象。 声明为const对象之后,这个对象的所有数据成员后面都不能被修改! const对象定义类对象时可以将其指定为const对象。定义后const对象不能再被修改。 const对象不能调用非const类型的成员函数。 有两种方法来定义一个const对象: const 类名 对象名 类名 c原创 2017-06-26 20:51:42 · 4195 阅读 · 2 评论 -
【C++】C++构造函数和析构函数
C++提供构造函数来处理对象的初始化。 构造函数是一种特殊的成员函数,不需要用户来调用,定义对象时被自动执行。 构造函数名字与类名相同,无返回类型(void也不能有哦)。可以由用户自己定义实现,根据需要设计对数据成员进行初始化用上个例子来继续写代码进去 CTime为类名无参数的构造函数:在.h文件中进行声明: CTime(); 在.cpp文件中进行实现: CTime::CTime(){原创 2017-06-26 20:51:06 · 2620 阅读 · 0 评论 -
【C++】C++类和对象
最近在公司弄游戏开发,C++基础也不是特别好,所以就打算继续开始学习C++。既然从头学习C++,就打算写一个系列教程。C++学习之路。 我是在边学习C++,边学习cocos2dx 3.X,白天时间不是很多, 先把C++系列写完再写coco2dx的教程。 希望对大家有帮助。 (可能基础知识不是很详细,对没有其他语言基础的人来说不是很友好,请见谅)每个实体都可以看成一个对象。在C++中,对象的类原创 2017-06-26 20:50:21 · 1746 阅读 · 0 评论 -
用指针方法排序数组
#include <stdio.h>#include <stdlib.h>//将一维数组中10个数按大到小的顺序排列输出int main(){ void sort(int x[],int n); //void sort(int *x,int n) int i,x[10]; int *p; p=x; for(i=0;i<10;i++)原创 2015-09-09 18:26:32 · 2049 阅读 · 0 评论 -
将若干字符串按字母顺序(由小到大)输出(用指针)
#include <stdio.h>#include <stdlib.h>#include <string.h>void sortt(char *name[],int n){ int i,j; char *temp; for(i=0;i<5;i++) { for(j=i+1;j<5;j++) { if(st原创 2015-09-14 19:59:16 · 6006 阅读 · 0 评论 -
指针部分,建立动态数组
#include <stdio.h>#include <stdlib.h>void check(int *p[]){ int i; printf("没及格的成绩有:\n"); for(i=0;i<5;i++) { if(p[i]<60) printf("%d ",p[i]); } printf("\n原创 2015-09-14 21:47:54 · 1382 阅读 · 0 评论 -
C/C++常用算法【C语言顺序查找(随机数)】【1】
这是我学习唐峻,李淳的《C/C++常用算法第一天》 1.8.1. 查找数字: 程序随机生成一个拥有20个整数数据的数组,然后输入要查找的数据。接着,可以采用醉简单的逐个对比的方法进行查找,也就是顺序查找的方法,下面给出该算法完整的C语言代码:#include <stdio.h>#include <stdlib.h>#include <time.h>#define N 20int main(原创 2015-12-11 14:44:19 · 2903 阅读 · 0 评论 -
C/C++常用算法【C语言顺序查找(顺序表)】【2】
直接上代码,代码中有详细注释,请自己领悟#include <stdio.h>#include <stdlib.h>#define MAXLEN 100 //定义顺序表的最大长度typedef struct { char key[10]; //结点的关键字 char name[20]; int age;} DATA; //定义结点类型ty原创 2015-12-11 18:21:46 · 4826 阅读 · 0 评论 -
HDOJ 1716 排列2(next_permutation函数)
先讲下用这个函数来求,后面有递归的方法。 用了两种方法。这是一个求一个排序的下一个排列的函数,可以遍历全排列,要包含头文件下面是以前的笔记 与之完全相反的函数还有prev_permutation(1) int 类型的next_permutationint main(){ int a[3];a[0]=1;a[1]=2;a[2]=3; do{cout<<a[0]<<" "<<a原创 2015-12-13 22:40:09 · 1746 阅读 · 0 评论 -
汉洛塔递归实现的思考(C语言)
汉洛塔是古印度神话产生的智力玩具,他的玩法是,有三个柱子分别为A,B,C,A柱上面有n个盘子上面小下面大堆叠放在一起,现在要求激将A柱上的盘子全部移到C柱上面,并且一次只能移动一个盘子,必须是小盘在大盘的上面。现在要求用C语言递归来完成,并统计递归调用的次数。这个实现是递归的强大功能的体现,废话不多说,请看源码:#include<stdio.h>void move(int n,int *cnt,c转载 2015-12-17 20:48:53 · 2032 阅读 · 0 评论 -
int(*p)[4] int*p[4]
1、int(*p)[4];------p为指向含4个元素的一维整形数组的指针变量(是指针)#include <stdio.h>#include <stdlib.h>int main(){ int a[4]={1,2,3,4}; int (*p)[4]; p=&a; printf("%d\n",(*p)[3]); printf("%d\n",*p);原创 2015-09-10 13:33:52 · 1729 阅读 · 0 评论 -
使用指向函数的指针
/**输入2个整数,然后让用户选择1或2,选1时调用max函数,输出2者中的大数,选2时调用min函数,输出2者中的小数**/#include <stdio.h>#include <stdlib.h>int main(){ int max(int x,int y); int min(int x,int y); int (*p)(int ,int ); int原创 2015-09-10 14:34:22 · 1354 阅读 · 0 评论 -
用指向函数的指针作函数参数
/**有2个整数a,b,有用户输入1,2,或3,如输入1,程序就给出a和b中大者,输入2,就给出a和b中小者,输入3,就给出a和b的和**/#include <stdio.h>#include <stdlib.h>int main(){ int f(int x,int y,int (*p)(int ,int )); int max(int x,int y); int原创 2015-09-10 15:04:09 · 1634 阅读 · 0 评论 -
返回指针值的函数(1)
/**有a个学生,每个学生有b门课程的成绩。要求在用户输入学生序号以后,**/#include <stdio.h>#include <stdlib.h>int main(){ float *aa(int (*p)[4],int n); float a[3][4]={{50,99,80,50},{55,60,85,90},{10,54,74,26}}; float *p原创 2015-09-12 16:40:34 · 1507 阅读 · 0 评论 -
返回指针值的函数(2)
请自己理解,比较简单/**对前面那个问题,输出有不及格成绩的学生的所有成绩**/#include <stdio.h>#include <stdlib.h>int main(){ float a[3][4]={{50,99,80,50},{55,60,85,90},{10,54,74,26}}; float *p; float *aa(float (*pt)[4]);原创 2015-09-12 17:00:32 · 1676 阅读 · 0 评论 -
用指针将字符串a的内容复制到字符串b
#include <stdio.h>#include <stdlib.h>/**int main(){ char a[]="i love you very mach!",b[100]; int i; for(i=0;*(a+i)!='\0';i++) { *(b+i)=*(a+i); } *(b+i)='\0'; print原创 2015-09-09 21:50:08 · 6557 阅读 · 1 评论 -
生成元
算法竞赛入门经典第二版p52 例题3-5: 如果x+x的各个数字之和得到y,就是说x是y的生成元。给出n(1<=n<=100000), 求最小生成元。无解输出0.例如,n=216,121,2005时的解分别是198,0,1979. 利用打表法: 代码:#include <stdio.h>#include <stdlib.h>#define maxn 100005int anx[max原创 2015-09-26 15:10:57 · 3230 阅读 · 1 评论 -
指针数组和数组指针的详细解答
/**首先弄明白什么是指针数组,什么又是数组指针。 指针数组: 类型名 *数组名[数组长度] 如: int *p[8]; 因为优先级的关系,p先与[]结合,说明p是一个数组,然后再与*结合数组p 的元素是指向整型数据的指针。相当于定义了8个整型指针变量。在此,p就是 数组元素为指针的数组,本质为数组。 数组指针:原创 2015-12-10 13:53:49 · 1671 阅读 · 0 评论