C/C++
mouse8166
这家伙很懒,什么也没留下...
展开
-
函数名与函数指针
一 通常的函数调用 一个通常的函数调用的例子://自行包含头文件void MyFun(int x); //此处的申明也可写成:void MyFun( int );int main(int argc, char* argv[]){ MyFun(10); //这里是调用MyFun(10);函数 return 0;}void MyFun(int x) //这转载 2010-04-21 18:17:00 · 291 阅读 · 0 评论 -
const,static,extern,volatile,mutable用法
1.const的用法:为什么使用const?采用符号常量写出的代码更容易维护;指针常常是边读边移动,而不是边写边移动;许多函数参数是只读不写的。const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替) 用法1:常量取代了C中的宏定义,声明时必须进行初始化。const限制了常量的使用方式,并没有描述常量应该如何分配。如果编译器知道了某const的所有使用,它甚至可以不为该const分配空间。最简单的常见情况就是常量的值在编译时已知,而且不需要分配存储。―《C++ Program Lan转载 2011-02-16 16:48:00 · 477 阅读 · 0 评论 -
C++中的随机数函数
<br />C++中产生随机数种子对于初学者一直都很困惑.大家知道,在C中有专门的srand(N)函数可以轻松实现这一功能,然而在C++中则要复杂一些.下面是笔者学习的一点心得,希望对大家能有所帮助.(这里我们依然要借助C标准库中的rand()函数)<br /> 函数说明:<br /> int rand(); :返回从[0,MAX)之间的随机整数,这里的MAX与你所定义的数据类型而定;需#include <cstdlib转载 2010-07-20 09:38:00 · 591 阅读 · 0 评论 -
虚构造函数与虚析构函数
虚构造函数:构造函数不可以是虚的,要构造一个对象必须掌握所创建的对象的确切类型,不过它所想达到的效果是可以变相实现。方法一:创建有关类型的新对象class Base{public: Base(); //默认构造 Base(const Base&); //赋值构造 virtual Base* createNewInstance(){ return原创 2010-04-26 14:18:00 · 604 阅读 · 0 评论 -
进程的虚拟地址空间
上图是进程的虚拟地址空间示意图。代码段:代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。数据段:数据段(data segment)通常是指用来存放程转载 2010-04-26 16:19:00 · 668 阅读 · 0 评论 -
malloc/free与new/delete的区别
相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执转载 2010-04-21 18:50:00 · 276 阅读 · 0 评论 -
C++ 运算符优先级列表
C++ 运算符优先级列表PrecedenceOperatorDescriptionExampleAssociativity1()[]->.::++--Grouping operatorArray accessMember access from a pointerMember access from an objectScoping operatorPost转载 2010-04-21 18:38:00 · 340 阅读 · 0 评论 -
左值(lvalue)和右值(rvalue)
左值(lvalue)和右值(rvalue)是编程中两个非常基本的概念,但是也非常容易让人误解,看了很多文章,自我感觉真正将这个问题讲的很透彻的文章还没有看见,所以自告奋勇来尝试一下。如果左值右值的概念不是非常清楚的话,它们迟早会像拦路虎一样跳出来,让你烦心不已,就像玩电脑游戏的时候每隔一段时间总有那么几个地雷考验你的耐性,如果一次把所有地雷扫尽就好了。左值(lvalue)和右值(r转载 2010-04-21 18:36:00 · 572 阅读 · 0 评论 -
调用约定
调用约定(Calling convention):决定函数参数传送时入栈和出栈的顺序,由调用者还是被调用者把参数弹出栈,以及编译器用来识别函数名字的修饰约定。 函数调用约定有多种,这里简单说一下: 1、__stdcall调用约定相当于16位动态库中经常使用的PASCAL调用约定。在32位的VC++5.0中PASCAL调用约定不再被支持(实际上它已被定义为__转载 2010-04-21 18:33:00 · 275 阅读 · 0 评论 -
位域与结构体对齐
一 位域有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几 个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把翻译 2010-04-21 18:21:00 · 519 阅读 · 0 评论 -
(Big Endian)与(Little Endian)字节序详解
<br /><br />大端(Big Endian)与小端(Little Endian)详解<br />【大端(Big Endian)与小端(Little Endian)简介】<br />Byte Endian是指字节在内存中的组织,所以也称它为Byte Ordering,或Byte Order。 <br /> 对于数据中跨越多个字节的对象, 我们必须为它建立这样的约定:<br />(1) 它的地址是多少?<br />(2) 它的字节在内存中是如何组织的?<br /> 针对第一个问题,有这样的转载 2011-02-19 15:02:00 · 6576 阅读 · 1 评论