C/C++
文章平均质量分 69
AC_XXZ
努力了不一定会成功,但不努力肯定会失败
展开
-
回调函数
参考:https://www.zhihu.com/question/19801131参考:http://blog.csdn.net/callmeback/article/details/4242260参考:http://blog.csdn.net/jackystudio/article/details/11720325C++很多类库都喜欢用回调函数,MFC中的定时器,消转载 2016-01-14 14:07:34 · 348 阅读 · 0 评论 -
c++ obj文件与exe文件的区别
编译:当前源代码编译成二进制目标文件(.obj文件)链接(link):将生成的.obj文件与库文件.lib等文件链接,生成可执行文件(.exe文件)。一个现代编译器的主要工作流程如下:源程序(source code)→ 预处理器(preprocessor)→ 编译器(compiler)→ 汇编程序(assembler)→ 目标程序(object code)→ 连接器(链接器,Linke转载 2015-01-18 20:37:49 · 3907 阅读 · 0 评论 -
使用typedef语句定义数组类型
1. 一维数组类型的定义格式typedef [];例如:(1) typedef int vector[10];(2) typedef char strings[80];(3) typedef short int array[N];第一条语句定义了一个元素类型为int,含有10个元素的数组类型vector,若不使用typedef保留字,则就变成了数组定义,它只定义了一个元素类转载 2015-01-18 20:32:52 · 927 阅读 · 0 评论 -
【C++】OJ提交题目中的语言选项里G++与C++的区别
G++?首先更正一个概念,C++是一门计算机编程语言,G++不是语言,是一款编译器中编译C++程序的命令而已。那么他们之间的区别是什么?在提交题目中的语言选项里,G++和C++都代表编译的方式。准确地说,选择C++的话,意味着你将使用的是最标准的编译方式,也就是ANSI C++编译。如果你使用的是G++的话,意味着你将使用GNU项目中最平凡适用人群最多的编译器(其实也就是我们熟转载 2015-02-03 23:51:44 · 2644 阅读 · 0 评论 -
C++对文件的操作(不断更新中)
-3原创 2014-12-08 19:01:37 · 1488 阅读 · 1 评论 -
typedef的用法【转】
作者: cxun*****以下是参考部分***** 此部分参考自:http://blog.sina.com.cn/u/572f7666010008dm 用途一: 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个转载 2015-02-03 00:02:55 · 739 阅读 · 0 评论 -
表达式求值
思路:参考严蔚敏的数据结构书籍两个栈:操作数栈OPND,操作符号栈OPTR在表达式后加=符号栈初始化时=入栈每读一个字符:当它是#并且符号栈栈顶也是#时结束算法当它是操作数时,进数栈当它是符号时:1.如果符号栈顶的优先级小于它,进符号栈2.如果符号栈顶的优先级大于它,出两个数,出一个符号,计算后入数栈3.如果与符号原创 2014-10-31 20:43:11 · 1019 阅读 · 0 评论 -
理解指针
从来没有好好理解过指针,这次花了点时间大概看了一下,把学到的一些东西记录下。1.指针1.1 初步理解指针 指针是C语言的一个重要特征,它是一个特殊的变量,里面存储的数值被解释成为内存里的一个地址 在讲指针之前,先搞清楚两个运算符:&和*&是取地址符,&a的运算结果是一个指针,指针的类型是a的类型加个*,指针所指向的类型是a的类型,转载 2014-10-06 16:26:52 · 695 阅读 · 0 评论 -
进制转换
进制转换Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 25284 Accepted Submission(s): 14100Problem Description输入一个十进制数N,将它转换成R进制数输出。原创 2014-09-25 20:56:58 · 783 阅读 · 0 评论 -
C++高频面试题
malloc/free和new/delete的区别malloc/free是C语言的标准库函数,new/delete是C++的运算符。 由于malloc/free是库函数而不是运算符,不在编译器控制权限之内。对于用户自定义的对象而言,用maloc/free无法满足动态管理对象的要求。(废话) new是类型安全的,malloc不是。int a=new float[2]是通不过编译的,n转载 2015-01-18 20:27:03 · 838 阅读 · 0 评论 -
详解C/C++预处理器
C/C++编译系统编译程序的过程为预处理、编译、链接。预处理器是在程序源文件被编译之前根据预处理指令对程序源文件进行处理的程序。预处理器指令以#号开头标识,末尾不包含分号。预处理命令不是C/C++语言本身的组成部分,不能直接对它们进行编译和链接。C/C++语言的一个重要功能是可以使用预处理指令和具有预处理的功能。C/C++提供的预处理功能主要有文件包含、宏替换、条件编译等。 1、文件包含转载 2015-01-18 20:22:26 · 824 阅读 · 0 评论 -
long long,_int64使用小结
前言: 在16位环境下,int/unsigned int 占16位,long/unsigned long占32位 在32位环境下,int占32位,unsigned int占16位,long/unsigned long占32位何时需要使用: long 和 int 范围是[-2^31,2^31),即-2147483648~2147483647,而unsigned范围是[0,2^3转载 2015-01-18 20:34:06 · 1020 阅读 · 0 评论 -
C++重要知识点拾忆
一:内联函数 函数调用也会带来降低效率的问题,因为调用函数实际上将程序执行顺序转移到函数所存放在内存中某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去前要保护现场并记忆执行的地址,转回后先要恢复现场,并按原来保存地址继续执行。 因此,函数调用要有一定的时间和空间方面的开销,于是将影响其效率。特别是对于一些函数体代码不是很大,但又频繁地被调用的原创 2015-07-06 17:01:23 · 1113 阅读 · 0 评论 -
深入const int *p与int * const p的区别详解(常量指针与指向常量的指针)
对于指针和常量,有以下三种形式都是正确的:复制代码代码如下:const char * myPtr = &char_A;//指向常量的指针char * const myPtr = &char_A;//常量的指针const char * const myPtr = &char_A;//指向常量的常量指针下面依次对这三种类型进行介绍。因为*操作符是左操作符,左转载 2015-06-25 14:18:41 · 885 阅读 · 0 评论 -
引用和指针的区别,数组和指针的区别
一:引用和指针的区别1:引用并非对象,它只是为一个已存在的对象所起的另外一个名字,必须初始化,而且无法改变它绑定的对象,之后每次使用这个引用都是访问最初绑定的那个对象。2:指针本身是对象,可以不用初始化,可以改变指针指向的对象二:指针与数组的区别指针数组保存数据的地址原创 2015-06-24 12:08:49 · 1858 阅读 · 0 评论 -
理解有符号数和无符号数
1、你自已决定是否需要有正负。 就像我们必须决定某个量使用整数还是实数,使用多大的范围数一样,我们必须自已决定某个量是否需要正负。如果这个量不会有负值,那么我们可以定它为带正负的类型。 在计算机中,可以区分正负的类型,称为有符类型(signed),无正负的类型(只有正值),称为无符类型。 (unsigned)数值类型分为整型或实型,其中整型又分为无符类型或有符类型,而实型则只有符类转载 2015-06-24 10:30:34 · 3208 阅读 · 1 评论 -
C语言字节对齐问题详解
引言 考虑下面的结构体定义:1 typedef struct{2 char c1;3 short s; 4 char c2; 5 int i;6 }T_FOO; 假设这个结构体的成员在内存中是紧凑排列的,且c1的起始地址是0,则s的地址就是1,c2的地址是3,i的地址是4。 现在,我们编写转载 2015-03-01 20:18:05 · 2495 阅读 · 0 评论 -
C++中指针和引用的区别
从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)。在C++中,指针和引用经常用于函数的参数传递,然而,指针传递参数转载 2015-01-25 15:01:17 · 650 阅读 · 0 评论 -
C++函数对象与函数指针不同之处
在C++编程语言中,有很多功能都与C语言相通,比如指针的应用等等。在这里我们介绍的则是一种类似于函数指针的C++函数对象的相关介绍。C++函数对象不是函数指针。但是,在程序代码中,它的调用方式与函数指针一样,后面加个括号就可以了。这是入门级的随笔,说的是函数对象的定义,使用,以及与函数指针,成员函数指针的关系。C++函数对象实质上是一个实现了operator()--括号操作符--的类。下面转载 2015-01-18 20:36:18 · 936 阅读 · 0 评论 -
C/C++程序员必须熟练应用的开源项目
作为一个经验丰富的C/C++程序员, 肯定亲手写过各种功能的代码, 比如封装过数据库访问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件访问的类, 封装过UI界面库等, 也在实际的项目中应用过, 但是回过头仔细想想,其实以前自己写过的这些代码,只能是在特定的项目或者特定的环境中使用, 对于自己来说, 在不同的项目中应用, 只需要复制代码, 改改也就可以了, 因为自己写的代码自己很熟悉。转载 2015-01-18 20:29:06 · 850 阅读 · 0 评论 -
C语言 内存分配 地址 指针 数组 参数 实例解析
指针简介 : 指针式保存变量地址的变量;-- 增加阅读难度 : 指针 和 goto 语句会增加程序的理解难度, 容易出现错误;-- ANSI C : American National Standards Institute 美国国家标准学会, 即标准C;-- 通用指针类型 : ANSI C中使用 void* 作为通用指针类型, 即指向void的指针, void 是空类型,转载 2014-08-17 21:10:01 · 853 阅读 · 0 评论 -
优秀程序员不得不知道的20个位运算技巧
一提起位运算,人们往往想到它的高效性,无论是嵌入式编程还是优化系统的核心代码,适当的运用位运算总是一种迷人的手段,或者当您求职的时候,在代码中写入适当的位运算也会让您的程序增加一丝亮点,最初当我读《编程之美》求“1的数目”时,我才开始觉得位运算是如此之美,后来读到 《Hacker's Delight》,感慨到Henry S.Warren把位运算运用的如此神出鬼没,很多程序都十分精妙,我觉得在一转载 2014-08-17 20:43:51 · 829 阅读 · 0 评论 -
STL函数模板(即算法)一览
查找算法adjacent_find:找出一个串中第一个不符合次序的地方find,find_if:找出第一个符合条件的元素find_first_of:在一个串中寻找第一个与另一个串中任意一个元素相等的元素search_n:在一个串中寻找一个元素第n次出现的地方count,count_if:一个串中符合条件的元素个数mismatch:找出两个串第一个不相等的地方equa原创 2014-08-17 20:05:35 · 812 阅读 · 0 评论 -
c++优化
优化是一个非常大的主题,本文并不是去深入探讨性能分析理论,算法的效率,况且我也没有这个能力。我只是想把一些可以简单的应用到你的C++代码中的优化技术总结在这里,这样,当你遇到几种不同的编程策略的时候,就可以对每种策略的性能进行一个大概的估计。这也是本文的目的之所在。目录: 一.优化之前 二.声明的放置 三.内联函数 四.优化你的内存使用 五.转载 2014-08-20 16:21:58 · 831 阅读 · 0 评论 -
计算结构体的大小
结构体中的成员可以是不同的数据类型,成员按照定义时的顺序依次存储在连续的内存空间。和数组不一样的是,结构体的大小不是所有成员大小简单的相加,需要考虑到系统在存储结构体变量时的地址对齐问题。看下面这样的一个结构体: struct stu1 { int i; char c; int j; }; 先介绍一个相关的概念——偏移量。偏移量指的是结构体转载 2014-08-20 16:16:27 · 841 阅读 · 0 评论 -
再谈typedef(重点为函数指针)
有种很方便的写法。typedef int *p;p pointer;这时直接把pointer带入原式中,取代p然后去掉typedef,得到的结果就是int * pointer;哈哈,这样直接替换就很直观多了。C语言语法简单,但内涵却博大精深;如果在学习时只是止步于表面,那么往往后期会遇到很多困难。typedef是C语言中一个很好用的工具,大量存在于已有代码中转载 2014-08-20 16:13:00 · 733 阅读 · 0 评论 -
C指针右左法则
C语言所有复杂的指针声明,都是由各种声明嵌套构成的。如何解读复杂指针声明呢?右左法则是一个既著名又常用的方法。不过,右左法则其实并不是C标准里面的内容,它是从C标准的声明规定中归纳出来的方法。C标准的声明规则,是用来解决如何创建声明的,而右左法则是用来解决如何辩识一个声明的,两者可以说是相反的。右左法则的英文原文是这样说的: The right-left rule: Start转载 2014-08-20 16:04:17 · 598 阅读 · 0 评论 -
内存分配方式
1.内存分配方式内存分配方式有三种:[1]从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。[2]在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。[3]从堆上分配,亦称动态内存分配。转载 2014-08-20 16:05:11 · 705 阅读 · 0 评论 -
神奇的位运算(不会不行啊。。。被坑了好多题了。。。。)
位运算应用口诀 清零取反要用与,某位置一可用或 若要取反和交换,轻轻松松用异或 移位运算 要点 1 它们都是双目运算符,两个运算分量都是整形,结果也是整形。 2 " 3 ">>"右移:右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0,若为负数,可能补0或补1,这取决于所用的计算机系统。 4 ">>>"运算符,右边的位被挤掉,对于左边移出的转载 2014-08-19 18:11:13 · 597 阅读 · 0 评论 -
c++文件操作详解
C++ 通过以下几个类支持文件的输入输出:ofstream: 写操作(输出)的文件类 (由ostream引申而来)ifstream: 读操作(输入)的文件类(由istream引申而来)fstream: 可同时读写操作的文件类 (由iostream引申而来)打开文件(Open a file)对这些类的一个对象所做的第一个操作通常就是将它和一个真正的文件联系起来转载 2014-06-13 20:55:18 · 725 阅读 · 0 评论 -
map用法
1.map基本用法:样例代码:#include#include#include#include#include#include#includeusing namespace std;int main(){map mymap;map::iterator it;mymap['b'] = 100;//这表示map里存的danmyma转载 2014-06-18 18:20:53 · 871 阅读 · 0 评论 -
深入剖析位运算
什么是位运算呢?程序中的所有数都是在计算机内存中都是以二进制的形式储存的。说白了,就是在内存中直接对整数进行操作。由于位运算直接对内存数据进行操作,不需要转成十进制,因此处理速度非常快。下面将讲解一下如何用位运算优化你的程序。各种位运算的使用=== 1. &运算 ===&运算通常用于二进制取位操作,例如一个数& 1的结果就是取二进制的最末位。这可以用来判断一个整数的奇偶,二转载 2014-08-20 15:42:52 · 638 阅读 · 0 评论 -
struct和typedef struct
分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是转载 2014-08-20 16:12:10 · 713 阅读 · 0 评论 -
深入了解scanf/getchar/gets/cin等函数
标准终端c语言类----------------------------------------------------------------------------------------------------------------------------------------------------------欢迎光临天资小屋:http://user.qzone.q转载 2014-08-20 16:39:40 · 827 阅读 · 0 评论 -
复杂指针的声明
复杂指针的声明用变量a给出下面的定义: 定义一个整型数。定义一个指向整型数的指针。定义一个指向指针的指针,它指向的指针是一个指向整型数指针。定义一个有10个整型数的数组。定义一个有10个指针的数组,该指针是指向一个整型数的指针。定义一个指向有10个整型数数组的指针。定义一个指向函数的指针,该函数有一个整型参数并返回一个整型数。定义一个有10个指针的数组,该指针指向一个函数,该函数有一个转载 2014-08-17 19:56:36 · 502 阅读 · 0 评论 -
[ 模运算 ] 与 [ 模取幂运算 ]
很多地方用到模运算,这里说明模运算的一些规律,并加以证明。 后续会对这些理论实际的应用加以记录和说明。1. 模运算是取余运算(记做 % 或者 mod),具有周期性的特点。 m%n的意思是n除m后的余数, 当m递增时m%n呈现周期性特点, 并且n越大,周期越长,周期等于n。 例如 0 % 20 = 0,1 % 20 = 1, 2 % 20 = 2, 3 %转载 2014-08-17 20:09:50 · 821 阅读 · 0 评论 -
c++ string 用法详解
任何人对本文进行引用都要标明作者是Nicolai M.Josuttis ///////////////////////////////////////////////////////////////////////////////////C++ 语言是个十分优秀的语言,但优秀并不表示完美。还是有许多人不愿意使用C或者C++,为什么?原因众多,其中之一就是C/C++的文本处理功能太麻烦,用起转载 2014-08-17 20:06:09 · 579 阅读 · 0 评论 -
2~10进制内转换到10进制
2~10进制内转换到10进制转换是可以从最后一位开始的,每次我的第一直觉都是按公式从前面开始,发现很经常错。从后面开始比较简洁而且不易错误。[cpp] view plaincopyprint?/************************************************************************/ /* a是要转换的数转载 2014-08-17 20:02:51 · 635 阅读 · 0 评论 -
itoa()函数,10进制转换到(2~36)进制
先看下itoa()的函数说明吧:功 能:把一整数转换为字符串 用 法:char *itoa(int value, char *string, int radix); 详细解释:itoa是英文integer to array(将int整型数转化为一个字符串,并将值保存在数组string中)的缩写. 参数: value: 待转化的整数。 radix:转载 2014-08-17 20:01:41 · 862 阅读 · 0 评论 -
骆驼命名法,帕斯卡命名法和匈牙利命名法
一、匈牙利命名法:广泛应用于象Microsoft Windows这样的环境中。 Windows 编程中用到的变量(还包括宏)的命名规则匈牙利命名法,这种命名技术是由一位能干的 Microsoft 程序员查尔斯?西蒙尼(Charles Simonyi) 提出的。 匈牙利命名法通过在变量名前面加上相应的小写字母的符号标识作为前缀,标识出变量的作用域,类型等。这些符号可转载 2014-08-17 20:00:46 · 589 阅读 · 0 评论