
C++
文章平均质量分 63
岳飞传
细节之中自有天地,整洁成就卓越代码
展开
-
C++面向对象技术
第六章 C++面向对象面向对象技术的基本概念:面向对象是指按人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世界分析,设计,实现软件的办法,包括类,对象,消息以及类的特性(抽象,继承,封装,重载,多态)。class和struct的区别: C语言的struct与class的区别:struct只是作为一种复杂数据类型定义,不能用于面向对象的编程。C++中struct原创 2016-06-08 12:12:14 · 909 阅读 · 0 评论 -
单链表的相关操作
#ifndef _SLIST_H#define _SLIST_H#ifdef __cplusplusextern "C" {#endif /*******1. 不带头结点的单链表*****/ /***** *@链表结点结构定义 *@ m_data:数据 *@m_pNext:指向下一结点的指针 ***/ struct listNode原创 2015-07-22 22:06:21 · 566 阅读 · 0 评论 -
传指针和传指针引用的区别/指针和引用的区别
指针传递参数本质上是值传递的方式,它所传递的是一个地址值。值传递过程中,被调函数的形式参数作为被调函数的局部变量处理,即在栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。(这里是在说实参指针本身的地址值不会变)而在引用传递过程中,被调函数的形式参数虽然也作为局部变量在栈中开辟转载 2015-07-22 10:09:40 · 894 阅读 · 0 评论 -
指针初始化为NULL的作用
关于空指针NULL、野指针、通用指针首先说一下什么是指针,只要明白了指针的含义,你就明白null的含义了。 假设 有语句 int a=10; 那么编译器就在内存中开辟1个整型单元存放变量a,我们假设这个整型单元在内存中的地址是 0x1000;那么内存0x1000单元中存放了数据10,每次我们访问a的时候,实际上都是访问的0x1000单元中的10. 现在定义:int *p;转载 2015-07-19 22:36:25 · 6538 阅读 · 0 评论 -
第十一章:关联容器
关联容器关联容器支持高效率的关键字查找和访问。 关联容器和顺序容器的本质差别在于:关联容器通过键(key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素。关联容器(associative-container) :两个主要关联容器:map 和 setmap 的元素以键-值(key-value)对的形式组织:键用作元素在 map 中的索引,而值则表示所存储和读取的数据。set 仅包原创 2015-07-15 16:13:18 · 750 阅读 · 0 评论 -
动态内存与智能指针
在c++中,动态内存的管理是通过一对运算符来完成的:new,在动态内存中为对象分配空间并返回一个指向该对象的指针,我们可以选择对对象进行初始化;delete,接受一个动态对象指针,销毁该对象并释放与之关联的内存。 动态内存在使用时很容易出问题,有时会忘记释放内存,造成内存泄露,有时在尚有指针引用内存的情况下就释放了内存,导致产生引用非法内存的指针。 为了更容易(同时也更安全)第使用动态内存,新的原创 2015-07-14 10:37:07 · 592 阅读 · 0 评论 -
C++中const与指针、引用的分析
C++中函数的参数相比C语言中的函数参数要复杂的多,其中主要的原因是C++中引入了引用以及const限定符。这两个对象的引入,使得C++中的函数参数变得异常的复杂多变,每一种类型都具有比较适合的使用范围。本文详细的分析const与指针、引用在一起存在情况下的情况分析。 首先介绍引用 引用是对象的别名,必须在初始化的过程中与一个具体的对象绑定起来,绑定完成以后就再也不能够修改了,引用貌似转载 2015-06-15 21:51:32 · 505 阅读 · 0 评论 -
C和C++程序员面试秘籍
Q9:c++中const有什么作用? (1)const 用于定义常量:const定义的常量编译器可以对其进行数据静态型安全检查。 (2) const修饰函数的形式参数: A.如果输入参数采用“指针传递”,那么加const 修饰可以防止意外地改动该指针,起到保护作用。 将“const &”修饰输入参数的用法总结如下: a.对于非内部数据类型的输入参数,应该将“值传递”的方式改为“const原创 2015-06-15 21:44:46 · 2271 阅读 · 0 评论 -
C++ enum用法
转载地址:http://www.cnblogs.com/ifaithu/articles/2638218.html1、为什么要用enum 写程序时,我们常常需要为某个对象关联一组可选alternative属性.例如,学生的成绩分A,B,C,D等,天气分sunny, cloudy, rainy等等。 更常见的,打开一个文件可能有三种状态:input, output和ap转载 2015-07-04 16:00:08 · 3226 阅读 · 0 评论 -
内存分配--静态内存、栈和堆
可编程内存在基本上分为这样的几大部分:静态存储区、堆区和栈区。他们的功能不同,对他们使用方式也就不同。 静态存储区:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。它主要存放静态数据、全局数据和常量。 栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的原创 2015-07-11 15:37:20 · 689 阅读 · 0 评论 -
C++的流插入运算符“<<”和流提取运算符“>>”的重载
C++的流插入运算符“<<”和流提取运算符“>>”是C++在类库中提供的,所有C++编译系统都在类库中提供输入流类istream和输出流类ostream。cin和cout分别是istream类和ostream类的对象。在类库提供的头文件中已经对“<<”和“>>”进行了重载,使之作为流插入运算符和流提取运算符,能用来输出和输入C++标准类型的数据。因此,凡是用“cout<<”和“cin>>”对标准类型原创 2015-07-10 15:38:16 · 7873 阅读 · 0 评论 -
C++类型转换
c++类型转换分为隐形转换和显示转换第1部分. 隐式类型转换又称为“标准转换”,包括以下几种情况:1) 算术转换(Arithmetic conversion) :在混合类型的算术表达式中, 最宽的数据类型成为目标转换类型。int ival = 3;double dval = 3.14159;ival + dval;//ival被提升为double类型2)一种类型表达式赋值给另一种类型的对象:目标类原创 2015-09-16 18:54:56 · 480 阅读 · 0 评论 -
C /C++标准库 - <cstdio>(stdio.h)
C 标准库 - 1. 库变量 序号 变量 描述 1 size_t 这是无符号整数类型,它是 sizeof 关键字的结果。 2 FILE 这是一个适合存储文件流信息的对象类型。 3 fpos_t 这是一个适合存储文件中任何位置的对象类型。2. 宏定义下面是头文件 stdio.h 中定义的宏: 序号 宏 描述 1 NULL 这个宏是一原创 2015-12-15 13:03:33 · 3730 阅读 · 0 评论 -
C /C++标准库 - <cstdlib>(stdlib.h)
stdlib.hstandard library标准库头文件,是一个大杂烩,定义和声明一些没有明显的归属的宏和函数。1. Types 序号 Types 描述 1 div_t Structure returned by div 2 ldiv_t Structure returned by ldiv 3 lldiv_t (c++11) Structure r原创 2015-12-15 22:41:37 · 2065 阅读 · 0 评论 -
C/C++ 读入一行字符串
C/C++ 读入一行字符串标签(空格分隔): 常用代码积累1.getsgets函数的头文件是#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { int size = 1024; char* buff = (char*)malloc(size); // read原创 2016-04-03 12:12:19 · 3415 阅读 · 0 评论 -
断言(ASSERT)的用法
assert()的用法像是一种“契约式编程”,在我的理解中,其表达的意思就是,程序在我的假设条件下,能够正常良好的运作,其实就相当于一个if语句:if(假设成立){ 程序正常运行;}else{ 报错&&终止程序!(避免由程序运行引起更大的错误) } 但是这样写的话,就会有无数个if语句,甚至会出现,一个if语句的括号从文件头到文件尾,并且大多转载 2015-12-07 11:45:22 · 1144 阅读 · 0 评论 -
C++ 读取键盘输入(cin/cin.getline()/cin.get()/cin.clear())
1.cinC++ 使用cin可以方便的读取键盘输入的字符,例如: //test input #include int main() {转载 2015-12-08 14:56:52 · 627 阅读 · 0 评论 -
c语言中static用法总结
一、c程序存储空间布局C程序一直由下列部分组成:正文段——CPU执行的机器指令部分;一个程序只有一个副本;只读,防止程序由于意外事故而修改自身指令;初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里。非初始化数据段(bss段)——在程序中没有初始化的全局变量;内核将此段初始化为0。栈——增长方向:自顶向下增长;自动变量以及每次函数调用时所需要保存的信息(返回地转载 2015-12-04 18:12:58 · 506 阅读 · 0 评论 -
C /C++标准库 - <cerrno> (errno.h)
1. 概述errno中定义了几个宏,其和错误状态的报告有关2. Macroerrno:errno 是记录系统的最后一次错误代码,代码是一个int型的值。 注意:只有当一个库函数失败时,errno才会被设置。当函数成功运行时,errno的值不会被修改。这意味着我们不能通过测试errno的值来判断是否有错误存在。反之,只有当被调用的函数提示有错误发生时检查errno的值才有意义。查看错误代码errno原创 2015-12-18 22:47:04 · 5145 阅读 · 0 评论 -
C /C++标准库 - <ctime> (time.h)
1. time.h概述定义了两个宏,声明了四种类型和几个操作时间的函数。很多函数处理都表示当前日期(公历)和时间。有些函数处理本地时间(某个特定时区的时间)和夏令时(是确定本地时间算法的临时替代)。2. 定义2.1 types 序号 标签 说明 1 clock_t 表示时间的算数类型,CPU时钟计时单元,由clock()返回 2 size_t 无符号整形,可表示任何原创 2015-12-18 18:09:10 · 7261 阅读 · 0 评论 -
C /C++标准库 - <cstddef> (stddef.h)
1. 概述stddef.h定义了一些标准宏以及类型,是C语言标准所必须的一部分。2. 定义2.1 Types 序号 标记 原型 说明 1 ptrdiff_t 两个指针相减的结果的有符号整数类型 2 size_t 无符号整数类型,对数组下标或地址算数操作时使用 3 wchar_t c++已作为基本类型,不再任何头文件定义 宽字节字符类型原创 2015-12-18 12:14:53 · 8671 阅读 · 0 评论 -
C /C++标准库 - <cassert> (assert.h)
1. 概述头文件assert.h的唯一目的是提供宏assert的定义。可以在程序中关键的地方使用这个宏来进行断言。如果一处断言被证明非真,我们希望程序在标准错误流输出一条适当的提示信息,并且使执行异常终止。 但其不是编写产品代码的最好方式,断言只能在调试程序的时候其左作用。可以使用NDEBUG宏来取消断言。2. Macro(宏定义) 宏 定义 说明 assert void as原创 2015-12-17 17:15:51 · 20036 阅读 · 0 评论 -
C /C++标准库 - <cctype> (ctype.h)
1. 概述This header declares a set of functions to classify and transform individual characters.2. 函数2.1 Character classification functions 序号 标签 原型 说明 1 isalnum int isalnum ( int c ); 判断字符原创 2015-12-17 11:30:29 · 1736 阅读 · 0 评论 -
C /C++标准库 - <cstring> (string.h)
1. string.h 概述string.h支持C语言把文本作为字符数组操作的传统,其声明了一种类型和几个函数,并定义了一个宏。声明的类型是size_t,定义的宏是NULL。确定数组长度的方法有很多种,但是所有情况下,char* 或者 void* 参数都指向数组的第一个(最低地址字符)。2. Functions(函数)2.1 Copying(复制): 序号 标记 原型 说明 1原创 2015-12-16 21:54:24 · 4000 阅读 · 1 评论 -
循环结构中break、continue、return和exit的区别
1. break continue ruturn exit转载 2015-07-02 15:49:20 · 1004 阅读 · 0 评论 -
C语言初学者编程规范—命名规则
C是一门朴素的语言,你使用的命名也应该这样。与Modula-2和Pascal程序员不同,C程序员不使用诸如“ThisVariableIsATemporaryCounter”这样“聪明”的名字。C程序员应该叫它“tmp”,这写起来更简单,也不会更难懂。 然而,当面对复杂情况时就有些棘手,给全局变量取一个描述性的名字是必要的。把一个全局函数叫做“foo”是一种目光短浅的行为。全局函数也一样,如果你有一转载 2015-06-01 20:13:21 · 1528 阅读 · 0 评论 -
C++静态成员变量和静态成员函数
数据成员可以分静态变量、非静态变量两种. 静态成员:静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态的成员..因为静态成员存在于内存,所以非静态成员可以直接访问类中静态的成员. 非成静态员:所有没有加Static的成员都是非静态成员,当类被实例转载 2014-11-05 11:20:26 · 488 阅读 · 0 评论 -
fstream的使用方法介绍
fstream的使用方法介绍在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:1、插入器( 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout2、析取器(>>) 从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况转载 2014-11-12 11:12:24 · 884 阅读 · 0 评论 -
cin.getline()与getline()
C++中有两个getline函数,这两个函数分别定义在不同的头文件中。1.getline()是定义在中的一个行数,用于输入一行string,以enter结束。 函数原型:getline(cin,str);cin:istream类的输入流对象str:待输入的string对象 example 1:[cpp] view plaincopy转载 2014-11-11 21:53:07 · 800 阅读 · 0 评论 -
getline()函数详解
转载:www.cnblogs.com/overcode 学习C++的同学可能都会遇到一个getline()函数,譬如在C++premer中,标准string类型第二小节就是“用getline读取整行文本”。书上给的程序如下:int main(){ string line: while(getline(cin,line)) cout re转载 2014-11-11 21:47:41 · 899 阅读 · 0 评论 -
关于使用while(!filePCloud.eof())判断文件结尾进行数据输入装换时注意事项
TXT文件读取操作注意事项 TXT文件读取 文件结尾判断 eof原创 2014-09-10 22:23:01 · 1220 阅读 · 0 评论 -
C++Vector用法
C++内置的数组支持容器的机制,但是它不支持容器抽象的语义。要解决此问题我们自己实现这样的类。在标准C++中,用容器向量(vector)实现。容器向量也是一个类模板。标准库vector类型使用需要的头文件:#include 。vector 是一个类模板。不是一种数据类型,vector是一种数据类型。Vector的存储空间是连续的,list不是连续存储的。一、 定义和初始化vector转载 2014-06-25 23:15:13 · 485 阅读 · 0 评论 -
vector用法总结
vector用法总结(定义,操作,方法,注意点)(一) 2010-03-25 13:34:06| 分类:C++STL |举报|字号 订阅前一篇日志中,我们记述了利用面向对象中的多态性实现画圆和画方形的操作。今天把其中的涉及到的知识点vector作一个总结,以作记忆。http://blog.163.com/zhoumhan_0351/blog/stat转载 2014-06-26 10:10:45 · 1150 阅读 · 0 评论 -
函数abs 和fabs
abs和fabs最简单的区别是abs为整数的绝对值,fabs为浮点数的绝对值。C语言函数名: abs功 能: 求整数的绝对值 头文件:math.h 用 法: int abs(int i); 程序例: #include #include int main(void) { int number = -1234; printf("number:原创 2014-06-25 16:58:43 · 11863 阅读 · 0 评论 -
指针参数传递时const指针使用
const指针声明指针时,可以在类型前或后使用关键字const,也可在两个位置都使用。例如,下面都是合法的声明,但是含义大不同:const int * pOne; //指向整形常量 的指针,它指向的值不能修改int * const pTwo; //指向整形的常量指针 ,它不能在指向别的变量,但指向(变量)的值可以修改。 const int *const pThree原创 2014-04-14 11:35:53 · 2752 阅读 · 1 评论 -
C++中值传递、引用传递、指针传递的详解
从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)。在C++中,指针和引用经常用于函数的参数传递,然而,指针传递参数和引用传原创 2014-04-12 23:31:08 · 655 阅读 · 0 评论 -
动态生成有规律的文件名
转自百度百科for(int loops=0;loops{char FileName[100];sprintf(FileName,"%d.txt",loops);savefile(FileName);}sprintf编辑字符串格式化命令,主要功能是把格式化的数据写入某个字符串中。sprintf 是个变参函数。头文件转载 2014-12-25 15:52:56 · 1555 阅读 · 0 评论 -
&和&&的使用区别
在程序设计学习中,&和&&被解释为:&&是逻辑操作符,而&是位操作符,但是它们的具体使用上的区别到底是什么呢? 1、先看看&&,它是我们在程序设计中经常用到的一个操作符,和||相对应,表示boolean的逻辑运算,当使用&&运算符时 如果第一表达式为假就不再判断第二表达式的真假,直接返回false; 例子:2>1 && 3>2返回true,2<1 && 100/0 == 1返回false;转载 2015-03-19 17:55:32 · 653 阅读 · 0 评论 -
for循环内变量定义问题
在C99之前的编译器,不支持括号内进行定义变量 2.在C++中是允许定义变量的,其c99之后的编译器亦可以在括号内进行声明变量。#include<stdio.h>//c++可以编译,但是c不能编译int main(){ int sum=0; for(int i=0;i<=100;++i)//定义并初始化变量i=0.实际编译器运行不起来。但把int i=0拿到for循环外部(如原创 2015-03-19 20:06:45 · 5490 阅读 · 0 评论 -
assert()函数用法总结
assert宏的原型定义在#include <assert.h>void assert( int expression ); assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badptr.c: 复制代码#include <stdio.h>#include <a转载 2015-05-08 09:32:28 · 712 阅读 · 0 评论