c++
文章平均质量分 77
&刘仔很忙
这个作者很懒,什么都没留下…
展开
-
传指针和传指针引用的区别/指针和引用的区别(本质)
转自:http://blog.sina.com.cn/s/blog_673ef8130100imsp.html 指针传递参数本质上是值传递的方式,它所传递的是一个地址值。值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,即在栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变...转载 2018-04-21 17:08:24 · 313 阅读 · 0 评论 -
C++三大特性之多态
原文地址:https://qunxinghu.github.io/2016/09/08/C++%20%E4%B8%89%E5%A4%A7%E7%89%B9%E6%80%A7%E4%B9%8B%E5%A4%9A%E6%80%81/概念多态(Polymorphisn)多态性是允许你将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。...转载 2018-04-09 16:52:02 · 109 阅读 · 0 评论 -
C++三大特性之多态
多态编译环境:VS2013一、对象类型在引入多态之前,我们先来看一下对象类型 二、多态性的概念 多态一词最初来源于希腊语,意思是具有多种形式或形态的情形,在C++中是指同样的消息被不同类型的对象接收时导致不同的行为,这里讲的消息就是指对象的成员函数的调用,而不同的行为是指不同的实现。也就是调用了不同的函数。 概念的给出总是那么的抽象,我们来通过一个具体的例子来看看什么是多态:#i...转载 2018-04-09 13:51:29 · 225 阅读 · 0 评论 -
浅析C++中结构体的定义、初始化和引用
以下是对C++中结构体的定义、初始化和引用进行了详细的介绍,需要的朋友可以过来参考下定义:结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。声明一个结构体类型的形式是:复制代码代码如下:struct Student{ //声明一个结构体类型Student int num; //声明一个整形变量num char name[20]; ...转载 2018-04-01 15:24:02 · 486 阅读 · 0 评论 -
C/C++结构体语法总结
https://blog.csdn.net/dawn_after_dark/article/details/73555562结构体简介结构体属于聚合数据类型的一类,它将不同的数据类型整合在一起构成一个新的类型,相当于数据库中一条记录,比如学生结构体,整合了学号,姓名等等信息。结构体的好处就是可以对这些信息进行整体管理操作,类似面向对象中类的属性,有了结构体,我就可以更好抽象描述一个类别,个人感觉类...转载 2018-04-01 14:31:32 · 145 阅读 · 0 评论 -
深入探讨this指针
深入探讨this指针 为了写这篇文章,准备了好长时间,翻遍了箱底的书籍。但是现在还是不敢放开手来写,战战兢兢。不是担心自己写错,而是唯恐自己错误误导别人。同时也希望这篇文章能给你一点收获。既然是深入探讨this指针,所以建议初学者,最好具有一定编译基础,调试基础。如果大家认为这片文章有不满的地方,就给我发信批评一下,以便及时修正。关于this指针的描述我们一般从语言层次上讲;this指针作为一个隐...转载 2018-03-31 14:36:16 · 195 阅读 · 0 评论 -
指针函数与函数指针
1.指针函数先看下面的函数声明,注意,此函数有返回值,返回值为int *,即返回值是指针类型的。[cpp] view plain copyint *f(int a, int b); 上面的函数声明又可以写成如下形式:int* f(int a, int b);让指针标志 * 与int紧贴在一起,而与函数名f间隔开,这样看起来就明了些了,f是函数名,返回值类型是一个int类型的指针。下面看指针函数的...转载 2018-03-31 13:48:48 · 196 阅读 · 0 评论 -
在C中如何使函数返回数组
Java语言的函数可以轻易的返回一个数组,而C/C++却不能直接返回一个数组。这是由于在C/C++中,数组不是一种类型,因此不能被直接返回。 在C/C++中,一般有两种方法来返回一个数组。第一种方法: 返回一个指向数组的指针,例如char (*retArray)[10]声明了一个函数retArray,该函数可以返回指向具有10个char元素的数组 例子如下: [cpp] view plain...转载 2018-03-25 21:00:45 · 1147 阅读 · 0 评论 -
setw()函数使用
在C++中,setw(int n)用来控制输出间隔。例如:cout<<'s'<<setw(8)<<'a'<<endl;则在屏幕显示s a //s与a之间有7个空格,setw()只对其后面紧跟的输出产生作用,如上例中,表示'a'共占8个位置,不足的用空格填充。若输入的内容超过setw()设置的长度,则按实际长度输出。setw()默认填充的...转载 2018-03-25 17:07:13 · 1611 阅读 · 0 评论 -
C++函数的定义与使用
函数的定义和使用main就是一个函数,它是C++程序的主函数。一个C++程序可以由一个主函数和若干子函数组成。主函数是程序执行的开始点。由主函数调用子函数,子函数还可以再调用其它子函数。调用其它函数的函数称为主调函数。被其他函数调用的函数称为被调函数。一个函数很可能既调用别的函数又被其它函数调用。1.函数的定义1.1函数定义的语法形式类型说明符 函数名(含类型说明的形式参数表){ 语句序列...转载 2018-03-25 15:30:49 · 26080 阅读 · 6 评论 -
白话C++系列(9)-- 类内定义与类外定义
精彩的类外定义类内定义问题:什么是类内定义?将成员函数的函数体写在类的内部的方式称为类内定义。比如下面的Student的类,我们可以看到,在定义成员函数的时候,包括每个成员函数用于实现的函数体,都在类的内部。类内定义与内联函数的关系类内定义的成员函数,编译器会将其优先编译为内联函数,但是对于复杂的成员函数无法编译成内联函数的,就编译成普通的函数。类外定义所谓类外定义是指成员函数的函数体写在类的外面...转载 2018-04-02 21:58:34 · 8077 阅读 · 1 评论 -
指针和引用的区别
在c++的学习中,我们经常被应该如何使用指针和引用这个问题所困扰,那么我这里给大家说一下在我的学习过程中对指针和引用的理解,和它们之间的区别,希望各位朋友给出不同的意见并且指出我在学习中的一些错误 首先我们来聊一下指针,相信我们在C的学习中就会遇到这个在C编程中无处不在的朋友。 指针本来就是用来存放地址的一个变量,其中他存放的地址和存放地址中的数据都可以被更改除非你这样(const i...转载 2018-04-21 15:45:09 · 221 阅读 · 0 评论 -
指针函数与函数指针--两个简单例子进行说明
一直都对两个概念有所混淆--指针函数与函数指针,下面我们通过两个例子来讲解一下----------------------------------------------------------------------------------------------------------------------------------- ...转载 2018-04-22 10:47:04 · 2010 阅读 · 0 评论 -
C++学习之继承篇(多继承与多重继承)
1.多继承多继承是指一个子类继承多个父类。多继承对父类的个数没有限制,继承方式可以是公共继承、保护继承和私有继承,不写继承方式,默认是private继承多继承举例:#include <iostream>#include <stdlib.h>#include <string>using namespace std;/** * 定义工人类: Worker * 数据成...转载 2018-04-03 21:02:27 · 260 阅读 · 0 评论 -
c++ 内联函数
1. 内联函数在C++中我们通常定义以下函数来求两个整数的最大值:复制代码 代码如下:int max(int a, int b){ return a > b ? a : b;}为这么一个小的操作定义一个函数的好处有:① 阅读和理解函数 max 的调用,要比读一条等价的条件表达式并解释它的含义要容易得多② 如果需要做任何修改,修改函数要比找出并修改每一处等价表达式容易得多③ 使用函数可以确保...转载 2018-04-03 19:34:08 · 99 阅读 · 0 评论 -
静态成员函数和普通成员函数的区别
成员函数:无论静态函数还是非静态函数,都是属于类的(这一点与数据成员的静态非静态不同),对象并不拥有函数的拷贝.两者的区别在于:非静态的函数由类对象(加.或指针加->;)调用,这时将向函数传递this指针.而静态函数由类名(::)(或对象名.)调用,但静态函数不传递this指针,不识别对象个体,所以通常用来对类的静态数据成员操作.程序最终都将在内存中执行,变量只有在内存中占有一席之地时才能被...转载 2018-04-03 14:03:23 · 327 阅读 · 0 评论 -
友元(友元函数、友元类和友元成员函数) C++
有些情况下,允许特定的非成员函数访问一个类的私有成员,同时仍阻止一般的访问,这是很方便做到的。例如被重载的操作符,如输入或输出操作符,经常需要访问类的私有数据成员。 友元(frend)机制允许一个类将对其非公有成员的访问权授予指定的函数或者类,友元的声明以friend开始,它只能出现在类定义的内部,友元声明可以出现在类中的任何地方:友元不是授予友元关系的那个类的成员,所以它们不受其声...转载 2018-04-15 18:43:35 · 329 阅读 · 0 评论 -
c++中友元函数理解与使用
在学习c++这一块,关于友元函数和友元类,感觉还是不好理解,但是井下心来,理解,需要把我一下几点。 首先讲友元函数。(1)友元函数:1)C++中引入友元函数,是为在该类中提供一个对外(除了他自己意外)访问的窗口;2)这个友元函数他不属于该类的成员函数,他是定义在类外的普通函数,只是在类中声明该函数可以直接访问类中的private或者protected成员。12使用友元函数声明的一般形式:frie...转载 2018-04-15 18:34:19 · 5810 阅读 · 1 评论 -
C++拷贝 (复制)构造函数详解
一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:[c-sharp] view plain copyint a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。[c-sharp] view plain copy#include <iostream> usi...转载 2018-04-03 10:42:33 · 372 阅读 · 0 评论 -
类声明和成员函数定义的分离
当一个类被多个程序使用时,一般将类的声明(包含成员函数的声明)放在指定的头文件中,用户编程时,只需将这个头文件包含进来,而不必在每个使用该类的程序中重复书写其声明。为了实现信息隐蔽(即封装后,用户只能看到函数的声明,知道如何去使用它,而不知道函数具体是如何实现的),对类的成员函数的定义一般不放在头文件中而放在另一个源代码文件中。下面我们以一个小例子来理解一下[cpp] view plain co...转载 2018-04-02 22:03:14 · 1754 阅读 · 0 评论 -
c/c++向函数传递指针并修改其指向的问题
一个用来交换两个数的值的函数,众所周知的错误写法为:[cpp] view plain copy#include <iostream> using namespace std; void swap(int a, int b) { int t = a; a = b; b = t; } int main() { int a, b; ...转载 2018-03-30 17:14:51 · 744 阅读 · 1 评论 -
C/C++中strcpy函数的用法
C语言标准库函数 原型声明:extern char *strcpy(char *dest,char *src); 头文件:string.h 功能:把src所指由NULL结束的字符串复制到dest所指的数组中。 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。典型实现 /********************** ...转载 2018-03-24 18:03:57 · 2047 阅读 · 0 评论 -
找不到min和max标识符--C++中头文件次序问题
在调试程序时出现了下面的问题,说找不到min和max标识符。1>c:\program files\microsoft sdks\windows\v7.0a\include\gdiplustypes.h(471): error C3861: “min”: 找不到标识符1>c:\program files\microsoft sdks\windows\v7.0a\include\gdi转载 2017-12-22 14:03:37 · 1737 阅读 · 0 评论 -
C++小练习—找零钱问题
采用贪心算法解决找零钱问题,如果需要找零57.8元,零钱数分别为(10元、5元、1元、5角、2角、1角)1、采用元为单位编写程序如下所示:[cpp] view plain copy#include using namespace std; int main() { float tot转载 2017-12-11 21:21:38 · 5643 阅读 · 0 评论 -
图的遍历
https://www.cnblogs.com/skywang12345/p/3711483.html转载 2017-11-20 20:49:15 · 186 阅读 · 0 评论 -
图的遍历 深度优先搜索 广度优先搜索
1. 深度优先搜索介绍图的深度优先搜索(Depth First Search),和树的先序遍历比较类似。它的思想:假设初始状态是图中所有顶点均未被访问,则从某个顶点v出发,首先访问该顶点,然后依次从它的各个未被访问的邻接点出发深度优先搜索遍历图,直至图中所有和v有路径相通的顶点都被访问到。 若此时尚有其他顶点未被访问到,则另选一个未被访问的顶点作起始点,重复上述过程,直至图中所有顶转载 2017-11-20 20:45:10 · 393 阅读 · 0 评论 -
C++中布尔类型
1.当表达式需要一个算术值时 布尔对象(如 found)和布尔文字都被隐式地提升成 int(正 如下面的例子) false 变成 0 而 true变成 1 例如 bool found = false; int occurrence_count = 0; while ( /* 条件省略 */ ) { found = look_for( /* 内容转载 2017-11-03 21:36:23 · 1671 阅读 · 0 评论 -
用empty()来代替检查size()是否为空
对于任意容器c,if (c.size() == 0)...12本质上等价于if (c.empty())...1这就是例子。你可能会奇怪为什么一个构造会比另一个好,特别是事实上empty()的典型实现是一个返回size()是否返回0的内联函数。你应该首选empty()的构造,而且理由很简单:对于所有的标准容器,empty()是一个常数时间的操作,但对于一些list实转载 2017-10-15 12:11:38 · 230 阅读 · 0 评论 -
c++迭代器介绍
迭代器的简介 (1):迭代器类似于指针类型,它也提供了对对象的间接访问。 (2):指针是c语言中就有的东西,迭代器是c++中才有的,指针用起来灵活高效,迭代器功能更丰富些。 (3):迭代器提供一个对容器对象或者string对象的访问的方法,并且定义了容器范围。使用迭代器 迭代器和指针不一样,容器和string有迭代器类型同时拥有返回迭代器的成员。比如,容器都有的成员begi转载 2017-10-14 22:17:45 · 304 阅读 · 0 评论 -
数据结构 copy,copy_backward和copy_if区别
copy,copy_backward和copy_if是几种常用的泛型算法,这三个函数包含在头文件#include中,下面县给出三种函数的原型,再说明三者的区别。 函数原型 copy(b,e,b1),其中b,e,b1都表示迭代器类型; copy_backward(b,e,b1),其中b,e,b1都表示迭代器; co转载 2017-10-14 22:00:09 · 536 阅读 · 0 评论 -
线性表、链表的区别
存储类别顺序存储结构单链表存储分配方式用一段连续的存储单元依次存储线性表的数据元素采用链式存储结构,用一组任意的存储单元存放线性表的元素时间性能查找O(1)、插入和删除O(n)查找O(n)、插入和删除O(1)空间性能需要预分配存储空间,分大了浪费,小了容易发生上溢不需要分配存储空间,转载 2017-10-14 21:47:59 · 9751 阅读 · 1 评论 -
编译错误之error C3861: “xxxx”: 找不到标识符
我的编译错误是如下:这个时候,我们一般往这几种情况去考虑。第一种情况我们看看是否包含sbc2dbc的文件是否包含进来。我们一查果然,包含sbc2dbc函数的sbcdbc.hpp文件并没有加进来!于是我们想办法找到sbcdbc.hpp,并把它include进来。在开头写上 include "sbcdbc.hpp"转载 2017-12-22 14:11:45 · 7166 阅读 · 0 评论 -
解决VS2013中出现类似于error C4996: 'scanf': This function or variable may be unsafe的安全检查错误
用习惯了VS老版本的人当刚使用VS2013的时候可能总遇到类似于这样的错误: error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See on转载 2017-12-22 14:58:04 · 1132 阅读 · 0 评论 -
理解一般指针和指向指针的指针
relation:http://blog.csdn.net/g200407331/article/details/52610175在说指向指针的指针之前,不得不说指向变量的指针。先看如下示例:1. 指向整型指针先看如下示例:View Code 1 #include <iostream> 2 using namespace std; 3 4 int main() 5 { 6 i...转载 2018-03-29 21:14:38 · 1526 阅读 · 0 评论 -
STL之priority_queue使用简介
优先队列容器也是一种从一端入队,另一端出对的队列。不同于一般队列的是,队列中最大的元素总是位于队首位置,因此,元素的出对并非按照先进先出的要求,将最先入队的元素出对,而是将当前队列中的最大元素出对。 C++ STL 优先队列的泛化,底层默认采用 vector 向量容器,使得队列容器的元素可做数组操作,从而应用堆算法找出当前队列最大元素,并将它调整到队首位置,确保最大元素出队。 堆算法(...转载 2018-03-05 14:17:41 · 140 阅读 · 0 评论 -
sort函数的用法(C++排序库函数的调用)
(一)为什么要用c++标准库里的排序函数Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n),执行效率较高!(二)c++标准库里的排序函数的使用方法I)Sort函数包含在头文件为#include<algorithm>的c++标准库中,调用标...转载 2018-03-05 14:14:15 · 366 阅读 · 0 评论 -
operator关键字(重载操作符)
operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名。 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算符的使用方法与其原来一致,另一方面扩展其功能只能通过函数的方式(c++中,“功能”都是由函数实现的)。一、为什么使用操作符重载?对于系统的所有操作符,一般情况下,只支持基本数据类型和标准库中提供的cl...转载 2018-03-05 14:01:04 · 351 阅读 · 0 评论 -
C++ 中vector的使用方法
在c++中,vector是一个十分有用的容器。作用:它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。特别注意:使用vector需要注意以下几点:1、如果你要表示的向量长度较长(需要为向量内部保存很多数),容易导致内存泄漏,而且效率...转载 2018-03-15 20:07:42 · 142 阅读 · 0 评论 -
C++ 中的 map
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识...转载 2018-02-27 23:22:44 · 257 阅读 · 0 评论 -
博客
https://github.com/61mon/61mon.com-blog-articles转载 2017-11-27 21:26:04 · 151 阅读 · 0 评论