随笔 - 113  文章 - 0  评论 - 218  阅读 - 73万
11 2010 档案
发现C++的sizeof关键字的奇怪问题
摘要:在调试程序的时候发一个关于关键字sizeof的令我感到困惑的问题看下面的例子:int a[5]所有人都明白这里定义了一个数组,其包含了5 个int 型的数据。我们可以用a[0],a[1]等来访问数组里面的每一个元素。当我们定义一个数组a 时,编译器根据指定的元素个数和元素的类型分配确定大小(元素类型大小*元素个数)的一块内存,并把这块内存的名字命名为a。名字a 一旦与这块内存匹配就不能被改变。a[0],a[1]等为a 的元素,但并非元素的名字。数组的每一个元素都是没有名字的。那现在再来看看sizeof 关键字时的几个问题:sizeof(a)的值为sizeof(int)*5,32 位系统下为20 阅读全文
posted @ 2010-11-29 17:28 陈国利 阅读(653) 评论(10) 推荐(0) 编辑
比较无聊的while与for的较量。
摘要:谈起程序循环,一般都会想到while或者for来控制。但是两者之间除了大家熟识的控制结构有所不同之外,两都运行效率又是如何。最近比较做了一个简单而且无聊的比较,发现两者运行效率的确略不同。之前在 彭博 著 《游戏编程指南》一书中看过说 for(;;)的执行速度比while(1)要快。书中的描述是用C++.为验证作者的观点,我用C#写了简单的测试语句(在Vs2008上运行),对比一下。结果相反。先看简单的测试程序。1.用while循环 DateTime dt1 = DateTime.Now; for (long i = 0; i < 100000000; i++) { while (tru 阅读全文
posted @ 2010-11-08 17:28 陈国利 阅读(451) 评论(0) 推荐(1) 编辑
求和比较高效的做法
摘要:写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)一般做法是:int sum(int n){long sum=0;for(int i=0;i<n;i++) { sum+=i;}return sum;}上面这种做法简单,方便可是效率怎么样,应该不是最好。在数学上,我们有一个求和公式。n*(n+1)/2于是有int sum(int n){ return n*(n+1)/2;}显然,这样效率显然比上面要好得很多。所以有时候算法高效只需要一个转变。而数学公式正是求解的导向。 阅读全文
posted @ 2010-11-05 16:46 陈国利 阅读(321) 评论(3) 推荐(0) 编辑
C++学习小记之static和const关键字
摘要:static关键字至少有下列n个作用:(1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;(2)在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;(3)在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;(4)在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;(5)在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。const 是constant 的 阅读全文
posted @ 2010-11-05 14:21 陈国利 阅读(714) 评论(0) 推荐(0) 编辑

< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示