C/C++
文章平均质量分 63
tkp2014
这个作者很懒,什么都没留下…
展开
-
指针变量、指针强制类型转换
一、指针变量转载 2014-06-14 16:39:07 · 1643 阅读 · 0 评论 -
C++内存管理
C++内存管理[导语]内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃转载 2014-09-18 09:25:35 · 459 阅读 · 0 评论 -
C++中的new和delete在类中的应用
类的构造函数和析构函数的一个典型原创 2014-09-19 11:19:35 · 596 阅读 · 0 评论 -
构造函数与析构函数
概述:一个类有两种原创 2014-09-19 09:18:27 · 535 阅读 · 0 评论 -
C++中构造函数和析构函数的执行顺序
构造函数顺序为: 全局对象的构造函数; main函数中对象的构造函数,包括automatic、static依次调用; main中遇到函数中有局部对象时,进入到函数中调用局部对象的构造函数。 注:static对象的构造函数永远只调用一次。析构函数顺序为:退出函数时,执行函数内构造的automatic对象的析构函数,注:static对象不析构;main函数中按构造的逆序转载 2014-09-19 16:24:48 · 627 阅读 · 0 评论 -
strlen和sizeof的区别,以及extern的用法
strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值。 strlen和sizeof的区别: strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定转载 2014-06-28 11:16:30 · 739 阅读 · 0 评论 -
C++学习网站集锦
C++之父的个人转载 2014-08-12 15:46:35 · 513 阅读 · 0 评论 -
各种string头文件的区别
http://blog.csdn.net/flyayi2006/article/details/2947428转载 2014-09-02 14:33:00 · 633 阅读 · 0 评论 -
函数调用
在windows平台上的C++编程中经常会看到一些__stdcall, __cdecl, WINAPI, CALLBACK等等关键字在函数前面,在.NET中还有__clrcall, __thiscall等关键字,有时加不加它们都可以,但是有时必须加上,不然编译不过。本文要讨论的就是这些关键字:调用约定(Calling Convention),有时也叫做“函数调用约定”或者“调用规范”。本文采用转载 2014-09-16 18:29:18 · 617 阅读 · 0 评论 -
有用的计时函数
/////////////////////////////////////////////////////////////////转载 2014-09-17 20:06:13 · 413 阅读 · 0 评论 -
C与C++中string的区别与联系
The good things about the two different strings types is that they are interoperable; you can copy from C to C++ or back again. C strings can be assigned to C++ strings directly and C++ strings have转载 2014-09-28 16:03:07 · 522 阅读 · 0 评论 -
#if、#elif、#else、#endif的使用
有些程序在调试、兼容性、平台移植等情况下可能想要通过简单地设置一些参数就生成一个不同的软件,这当然可以通过变量设置,把所有可能用到的代码都写进去,在初始化时配置,但在不同的情况下可能只用到一部分代码,就没必要把所有的代码都写进去,就可以用条件编译,通过预编译指令设置编译条件,在不同的需要时编译不同的代码。(一)条件编译方法 条件编译是通过预编译指令来实现的,主要方法有:1、#i转载 2014-10-24 10:55:48 · 812 阅读 · 0 评论 -
位运算之 -- 按位与(&)操作 -- 快速取模算法
由于位运算直接对内存数据进行操作,不需要转成十进制,因此处理速度非常快。按位与(Bitwise AND),运算符号为&a&b 的操作的结果:a、b中对应位同时为1,则对应结果位也为1、例如:10010001101000101011001111000& 111111100000000-------------------------------转载 2014-11-16 12:04:37 · 2651 阅读 · 0 评论 -
Valgrind的使用
Valgrind的主要作者Julian Seward刚获得了今年的Google-O'Reilly开源大奖之一──Best Tool Maker。让我们一起来看一下他的作品。Valgrind是运行在Linux上一套基于仿真技术的程序调试和分析工具,它包含一个内核──一个软件合成的CPU,和一系列的小工具,每个工具都可以完成一项任务──调试,分析,或测试等。Valgrind可以检测内存泄漏和内存违例,转载 2014-11-17 09:35:04 · 466 阅读 · 0 评论 -
嵌套注释的解决办法
/*.....*/,这个符号是C语言里的注释符,注释符之间的内容是方便人们读程序而写的,是给人看的,以增加程序的可读性,对编译和运行不器作用。注释可以在程序的任何位置。 c语言是由函数组成的,C拥有十分丰富的函数库,因此C很容易实现模块化。一个大的程序可以分成若干个模块进行编写,为了更好的调试目前正在编写的程序模块,可以将那些已经编好的部分先注释掉;或者在编写程序的时候发现某个转载 2014-10-30 16:07:25 · 2720 阅读 · 1 评论 -
位运算之美--用 +、- 和位运算实现正整数除法和取模(2)
在上一篇文章(下文中称为“文(一)”)中,我提出了一个具体的问题“只能用+,-和位运算实现正整数除法(/)和取模(%)”,并整理了一些和位运算相关的题目和算法,本文将给出上述问题的一个完整的解答思路和实现。首先思考最简单的除法实现,即循环减除数,减到不能再减为止,所减次数即所求的商,事实上这就是我们初学四则运算时对除法的定义,实现: 1int integer_div_0(int d转载 2014-11-16 11:22:18 · 638 阅读 · 0 评论 -
位运算之美--用 + 、- 和位运算实现正整数除法和取模(1)
今天看了一位师兄去年的笔经总结,其中有一题是“不许用%和/来实现求任意数除以3的余数”,我想考官的目的应该是想考察学生对位运算的熟悉程度吧,于是我把题目扩展成“只能用+,-和位运算实现正整数除法(/)和取模(%)”,注意:这里不能使用其它的库例程来辅助计算,如log,log10等。在思考这道题目的过程中,我又涉及到了许多二进制相关的题目,如: 判断给定的整数是不是2的整数次幂转载 2014-11-16 11:28:19 · 524 阅读 · 0 评论 -
CUDA中的计时函数
方法一: cudaEvent_t start, stop;cudaEventCreate(&start);cudaEventCreate(&stop);cudaEventRecord(start, 0);/cudaEventRecord(stop, 0);cudaEventSynchronize(stop);float el转载 2014-10-23 22:46:17 · 3646 阅读 · 0 评论 -
按位与(&)、或(|)、异或(^)等操作符
按位与运算符(&)参加运算的两个数据,按二进制位进行“与”运算。运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1; 即:两位同时为“1”,结果才为“1”,否则为0例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3&5的值得1。 另,负数按补码形式参加按位与运原创 2014-11-16 13:02:03 · 630 阅读 · 0 评论 -
#pragma once 和 #ifndef
【1】#pragma once这个宏有什么作用?为了避免同一个文件被include多次,C/C++中有两种宏实现方式:一种是#ifndef方式,一种是#pragma once方式。在能够支持这两种方式的编译器上,二者并没有太大的区别,但两者仍然有一些细微的区别。【2】两者的使用方式有何区别?示例代码如下:1 //方式一:2 #ifndef __SOME转载 2014-10-05 08:12:11 · 437 阅读 · 0 评论 -
.h 和 .cpp的区别
include该hpp文件即可,无需再将cpp加入到project中进行编译。而实现代码将直接编译到调用者的obj文件中,不再生成单独的obj,采用hpp将大幅度减少调用 project中的cpp文件数与编译次数,也不用再发布烦人的lib与dll,因此非常适合用来编写公用的开源库。 hpp的优点不少,但是编写中有以下几点要注意:1、是Header Plus Plus 的简写。转载 2014-10-05 09:18:49 · 520 阅读 · 0 评论 -
C/C++随机数的产生
计算机的随机数都是由伪随机数,即是由小M多项式序列生成的,其中产生每个小序列都有一个初始值,即随机种子。(注意: 小M多项式序列的周期是65535,即每次利用一个随机种子生成的随机数的周期是65535,当你取得65535个随机数后它们又重复出现了。)我们知道rand()函数可以用来产生随机数,但是这不是真正意义上的随机数,是一个伪随机数,是根据一个数(我们可以称它为种子)为基准以某个递推公原创 2014-11-04 23:29:01 · 493 阅读 · 0 评论 -
匈牙利命名法
摘自《WIndows游戏编程大师技巧》第二章匈牙利符号表示法 如果你正在动作一个像Microsoft一样的公司,有几千个程序员都在干不同的项目,在某一点上就应当提出一个编写代码的标准方式。否则,结果将是一片混乱。因此一个名字叫Charles Simonyi的人被委托创立了一套编写Microsoft代码的规范。这个规范已经用作编写代码的基本指导说明书。所有Micro转载 2014-10-19 12:32:19 · 438 阅读 · 0 评论 -
C++ 模板学习
1. 模板的概念。我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。//函数1.int max(int x,int y);{return(x>y)?x:y ;}//函数2.转载 2014-10-21 20:13:40 · 455 阅读 · 0 评论 -
VS2010中C++创建DLL图示
一、DLL的创建 创建项目: Win32->Win32项目,名称:MyDLL选择DLL (D) ->完成1、新建头文件testdll.htestdll.h代码如下:#ifndef TestDll_H_#define TestDll_H_#ifdef MYLIBDLL#define MYLIBDLL ex转载 2014-11-27 12:44:42 · 514 阅读 · 0 评论 -
C语言指针
指针、引用和取值什么是指针?什么是内存地址?什么叫做指针的取值?指针是一个存储计算机内存地址的变量。在这份教程里“引用”表示计算机内存地址。从指针指向的内存读取数据称作指针的取值。指针可以指向某些具体类型的变量地址,例如int、long和double。指针也可以是void类型、NULL指针和未初始化指针。本文会对上述所有指针类型进行探讨。根据出现的位置不同,操作符 * 既可以用来声转载 2014-11-29 12:54:39 · 430 阅读 · 0 评论 -
DLL原理
DLL原理 DLL 由4部分构成:代码段,数据段,输出符号表和输入符号表 代码段只读的,每个进程共享映射到此代码段. 数据段在DLL 中可以定义多个,当DLL被映射到进程时,操作系统会为每个进程都创建一个对应的数据段,并把DLL中的全局数据复制到进程中。因此,如果不采取特别的措施,DLL中的数据段不能跨进程共享。但是可以将数据段的属性修改为共享的,这样转载 2014-12-02 21:38:54 · 591 阅读 · 0 评论 -
字符串总结
1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p) 取字符串长度 strcmp(p, p1) 比较字符串 strcasecmp忽略大小写比较字符串strncmp(p, p1, n) 比原创 2015-01-10 17:21:34 · 496 阅读 · 0 评论 -
8大排序算法图文讲解
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。本文将依次介绍上述八大排序算法。算法一:插入排序 插入排序示意图插入排序是转载 2015-01-10 12:45:48 · 430 阅读 · 0 评论 -
堆与栈详解
问题描述 编程语言书籍中经常解释值类型被创建在栈上,引用类型被创建在堆上,但是并没有本质上解释这堆和栈是什么。我仅有高级语言编程经验,没有看过对此更清晰的解释。我的意思是我理解什么是栈,但是它们到底是什么,在哪儿呢(站在实际的计算机物理内存的角度上看)?在通常情况下由操作系统(OS)和语言的运行时(runtime)控制吗?它们的作用范围是什么?它们的大小由什么决定?哪个更快?转载 2015-01-10 10:52:11 · 670 阅读 · 1 评论 -
工程实践中最常用的10大数据结构与算法
最常用的算法1.图搜索算法(BFS,DFS)。2.排序算法3.通用的动态规划算法4.匹配算法和网络流算法5.正则表达式和字符串匹配算法最常用的数据结构1.图,尤其是树结构特别重要。2.Maps结构3.Heap结构4.Stacks/Queues结构5.Trie树其他一些相对比较常用的数据算法还有:贪心算法原创 2015-01-10 12:43:51 · 954 阅读 · 0 评论 -
数据结构与算法大全 -- 目录
下面是整理数据数据和算法的目录表,对于每一种按照C/C++/Java进行了划分,方便查阅。若文章有错误或纰漏,请不吝指正。谢谢! 数据结构和算法目录表 CC++Java线性结构1. 数组、单链表和双链表2. Linux内核中双向链表的经典实现 数组、单链表和双链表 数组、单链表和双链表 栈 栈 栈转载 2015-01-10 12:51:01 · 737 阅读 · 0 评论 -
各种数据类型的输出占位符
c语言中的输出操作相对java来说是比较麻烦的,每种数据类型的输出都有各自的占位符下面是各种数据类型的输出占位符:short/int : %dint a = 1;printf("这个整数是:%d", a);long : %ld (long 是int得修饰,不能算是一种单原创 2015-01-10 17:44:10 · 8824 阅读 · 0 评论 -
堆与栈
附上一段代码,理解堆与栈的使用:int foo(){ char *pBuffer; //<--nothing allocated yet (excluding the pointer itself, which is allocated here on the stack). bool b = true; // Allocated on the stack. if(b原创 2015-01-10 10:42:54 · 473 阅读 · 0 评论 -
在 Visual Studio 中调试多线程应用程序
原文出处:http://msdn.microsoft.com/zh-cn/library/ts553s52.aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-2转载 2014-12-06 13:43:09 · 851 阅读 · 0 评论 -
字节序(Endian)、大端(Big-Endian)、小端(little-Endian)
在各种计算机体系结构中,对于字节、字等的存储机制有所不同,因而引发了计算机通信领域中一个很重要的问题,即通信双方交流的信息单元(比特、字节、字、双字等等)应该以什么样的顺序进行传送。如果不达成一致的规则,通信双方将无法进行正确的编/译码从而导致通信失败。目前在各种体系的计算机中通常采用的字节存储机制主要有两种:big-edian和little-endian。 字节转载 2014-12-24 18:18:45 · 555 阅读 · 0 评论 -
多线程编程资源链接
// VC多线程编程http://www.cppblog.com/Lee7/archive/2008/08/15/58952.html原创 2014-12-27 11:26:13 · 388 阅读 · 0 评论 -
C++中this指针的用法
this指针只能在一个类的成员函数中调用,它表示当前对象的地址。下面是一个例子: void Date::setMonth( int mn ) { month = mn; // 这三句是等价的 this->month = mn; (*this).month = mn; } 1. this只能在成员函数中使用。全局函数,静态函数都转载 2014-12-26 23:54:35 · 438 阅读 · 0 评论 -
C++中的虚函数
C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不转载 2014-12-27 10:32:12 · 430 阅读 · 0 评论 -
extern "C"用法
extern “C”总结经常看到如下代码:#ifdef _cplusplusextern "C" {#endif#include "XXX.h"#ifdef _cplusplus}#endif解释:extern "C"的作用是,告诉C++编译器,下面的代码按照C的方式进行编译,说白了,不要对这些函数进行名字重整(fun转载 2015-01-18 23:45:03 · 448 阅读 · 0 评论