05 2012 档案

摘要:1. const指针总是指向相同的地址,该地址是不能被改变的. 1: int nValue = 5; 2: int *const pnPtr = &nValue;*pnPtr = 6; 这样的操作是可行的;而 int nValue2 = 2; pnPtr = &nValue2;这样的操作是不可行的。int *const pnPtr 可以这么理解,pnPtr当作地址,该指针有const地址,并且指向一个整型变量。2. 指向const变量(虽然这个变量本身可以不是const的)的指针 1: int nValue = 5; 2: const int *pnPtr = &nVa 阅读全文
posted @ 2012-05-22 20:48 grassofsky 阅读(169) 评论(0) 推荐(0) 编辑
摘要:摘要:举了几个动态内存分配过程中,发生内存泄漏的例子1. 分配了内存,却没有及时删除,导致泄漏 1: void doSomething() 2: { 3: int *pnValue = new int; 4: }2. 为指针变量分配了一个内存,然后又让指针变量指向其他的值,导致泄漏 1: int nValue = 5; 2: int *pnValue = new int; 3: pnValue = &nValue; // old address lost, memory leak results3. 连续分配了两次内存,第一次分配的内存由于没有delete,... 阅读全文
posted @ 2012-05-22 20:47 grassofsky 阅读(246) 评论(0) 推荐(0) 编辑
摘要:先来看一下一段代码: 1: char szString[255]; 2: cin >> szString; 3: cout << “You entered: ”<< szString << endl;这段代码在c++程序中是很常见的,但仔细想一下如果你输入的字符串长度大于255,就会出现溢出的现象,也许这个问题通常会被人忽略。其实我们可以选择一个更好的实现方法,如下 1: char szString[255]; 2: cin.getline(szString, 255); 3: cout << "Your entered: 阅读全文
posted @ 2012-05-22 20:46 grassofsky 阅读(214) 评论(0) 推荐(0) 编辑
摘要:from http://www.learncpp.com/cpp-tutorial/59-random-number-generation/通常在游戏,统计模型程序和科学模拟中会用到随机事件。而由于计算机的本质结构决定计算机只能生成伪随机数据。伪随机生成器,设定一个初始值(seed),对它进行操作形成不同的数值,让它看上去与初始值没有联系。如果算法足够复杂,将同样的算法用到最后生成的数字,这样就能够产生一些列看上去随机的数值。下面是一个产生100个伪随机数的程序:1. 1: #include <stdafx.h> 2: #include <iostream> 3: us 阅读全文
posted @ 2012-05-22 20:45 grassofsky 阅读(293) 评论(0) 推荐(0) 编辑
摘要:from http://www.learncpp.com/cpp-tutorial/44-type-conversion-and-casting/类型隐式转换类型隐式转换的步骤如下所示:Long double (highest)DoubleFloatUnsigned long intLong intUnsigned intInt (lowest) 最底层是int而不是short或是char,是因为char和short在求值时会被扩展为int。隐式转换会出现一些有趣的问题,如5u - 10。也许你会认为结果是-5.但是10为int型,发生隐式转换成unsigned int型,因此最后结果为uns 阅读全文
posted @ 2012-05-22 20:44 grassofsky 阅读(159) 评论(0) 推荐(0) 编辑
摘要:from http://www.learncpp.com/cpp-tutorial/38-bitwise-operators/位操作符的由来主要是为了更充分的利用内存,如果使用bool型变量,它是一个字节大小,其中一个字节的内存中只有一个位被利用,其余的位都被浪费了。但是现在内存是充裕的,程序员发现往往将代码表达的更加让人理解,更加容易维护是一种更好的选择。因此,位操作符的使用不再像最初那么平常了,除了一些特殊的环境中,如需要巨型数据处理的科学计算,或需要超速执行的游戏中,仍然会被使用。不管怎么样,对它有个充分的认识和理解还是必须的。OperatorSymbolFormOperationlef 阅读全文
posted @ 2012-05-22 20:43 grassofsky 阅读(265) 评论(0) 推荐(0) 编辑
摘要:from http://www.learncpp.com/cpp-tutorial/37-converting-between-binary-and-decimal/有符号二进制数最左边一位是符号位,0表示正,1表示负。有符号正数的存储方式与非符号数相同,负数的存储方式是相应的正数求反加1.如-76.其二进制是:0100,1100取逆:1011,0011加1:1011,0100为什么需要加一呢,让我们来看一下0,正数时0000,0000,取逆1111,1111。若不加1,0正负值有两种表述方式,因此通过加1的方式,使得0的表述唯一。 阅读全文
posted @ 2012-05-14 11:29 grassofsky 阅读(485) 评论(0) 推荐(0) 编辑
摘要:from http://www.learncpp.com/cpp-tutorial/36-logical-operators/逻辑操作符使用的过程中需要注意的有:1. 将&&和||操作符混合使用时,应该清除地认识到两者的优先级是有差异的,&&的优先级高于||的优先级。所以当你需要一个逻辑判断顺序执行时,如 nValue1 || nValue2 && nValue3,因为你忽略了优先级的不同,它实际执行情况将如下:nValue1 || (nValue2 && nValue3)而不是(nValue1 || nValue2) & 阅读全文
posted @ 2012-05-14 11:10 grassofsky 阅读(142) 评论(0) 推荐(0) 编辑
摘要:from http://www.learncpp.com/cpp-tutorial/35-relational-operators-comparisons/关系运算符的比较需要注意的就是浮点型数值的比较。小的舍入的误差可能会造成预料之外的结果。特别是在比较两个浮点数是否相等的情况下,使用==操作符进行比较就不被建议使用的。一种常用的解决方法是,考虑当两个数足够接近时,就认为它们是相等的。 1: bool IsEqual(double dX, double dY) 2: { 3: const double dEpsilon = 0.000001; // or some oth... 阅读全文
posted @ 2012-05-14 10:49 grassofsky 阅读(177) 评论(0) 推荐(0) 编辑
摘要:from http://www.learncpp.com/cpp-tutorial/34-sizeof-comma-and-arithmetic-if-operators/sizeofOperatorSymbolFormOperationSizeofsizeofsizeof(type)sizeof(variable)Returns size of type or variable in bytessizeof操作符返回以字节为单位的变量或是类型的大小。如: 1: #include <iostream> 2: 3: int main() 4: { 5: using... 阅读全文
posted @ 2012-05-14 10:36 grassofsky 阅读(211) 评论(0) 推荐(0) 编辑
摘要:from http://www.learncpp.com/cpp-tutorial/33-incrementdecrement-operators-and-side-effects/一个变量自增1与自减1是如此的平常,以至于在C中它们有了自己的操作符。每一个操作符都有两个版本——前缀与后缀。OperatorSymbolFormOperationPrefix increment++++xIncrement x, then evaluate xPrefix decrement––––xDecrement x, then evaluate xPostfix increment++x++Evaluat 阅读全文
posted @ 2012-05-12 09:08 grassofsky 阅读(267) 评论(0) 推荐(0) 编辑
摘要:from http://www.learncpp.com/cpp-tutorial/32-arithmetic-operators/一元算术操作符有两种一元算术操作符,+和-。一元操作符只进行一次操作OperatorSymbolFormOperationUnary plus++xValue of xUnary minus--xNegation of x为了获得最好的效果,这些操作符最好与操作对象紧挨在一起(如,-x,不是- x)。不要将一元减操作符和二元减操作符相混淆。如x = 5 - -3;。二元操作符这里有5中二元算术操作符OperatorSymbolFormOperationAdditi 阅读全文
posted @ 2012-05-11 21:27 grassofsky 阅读(267) 评论(0) 推荐(0) 编辑
摘要:来自:http://www.learncpp.com/cpp-tutorial/31-precedence-and-associativity/为了正确的计算类似下面这样的式子,4 + 2 * 3,我们必须知道操作符做了什么,以及它们执行的顺序,也就是说首先要明白操作符的优先级。使用常规的数学上的优先级规则,我们知道上面的式子可以这么求解 4 + (2 * 3) = 10在C++中,所有的操作符都分配有自己的优先级。具有高优先级的步骤先被计算。你可以从下面的表中看出乘法与除法(优先级序列5)比加减法(优先级序列6)高。编译器通过这些标签确定如何对它遇到的算式求解。如果两个操作符具有相同的优先级 阅读全文
posted @ 2012-05-10 20:55 grassofsky 阅读(245) 评论(0) 推荐(0) 编辑
摘要:来自:http://www.learncpp.com/cpp-tutorial/210-comprehensive-quiz/快速回顾当使用整型变量时,要注意溢出与整型相除的问题。当使用浮点型时,需要注意精度,舍入,相互间比较的问题。当使用字符时,不要将ASCII和数值搞混,注意溢出整型相除的问题。使用const关键字比使用#define更加安全。选了一个问题:给下列数字给出一个合适的类型:1. 用户的年龄(以年为单位)2. 用户是否想要颜色3. pi(3.14159265)4. 书本的页数5. 股票的价格,两个小数位6. 从出生以来你眨眼数(数量超过数百万)7. 一个人出生的时间,年为单位 阅读全文
posted @ 2012-05-10 20:22 grassofsky 阅读(192) 评论(0) 推荐(0) 编辑
摘要:原文来自:http://www.learncpp.com/cpp-tutorial/29-hungarian-notation/匈牙利标记法是在命名变量是在变量名的前面加上表示变量类型或是作用域的前缀。 1: int value; // non-Hungarian 2: int nValue; // the n prefix denotes an integer 3: 4: double width; // non-Hungarian 5: double dWidth; // the d prefix denotes a double关于匈牙利标记法在现代程序语言与现代... 阅读全文
posted @ 2012-05-10 10:45 grassofsky 阅读(449) 评论(0) 推荐(0) 编辑
摘要:原文来自:http://www.learncpp.com/cpp-tutorial/28-constants/C++使用两种常量:字面常量和符号常量。字面常量通过展示几个例子进行说明 1: int x = 5; // 5 is a literal constant 1: unsigned int nValue = 5u; // unsigned constant 2: long nValue2 = 5L; // long constant默认情况下,浮点型字面常量是double类型的。把它们转化成float值,可以通过增加f或F的后缀。 1: float fValue = 5.... 阅读全文
posted @ 2012-05-07 17:20 grassofsky 阅读(316) 评论(0) 推荐(0) 编辑
摘要:from http://www.learncpp.com/cpp-tutorial/27-chars/尽管char类型是一个整数,相比于整数,我们通常用另一种方式对char进行处理。字符能够存储一些小的数,或是ASCII字符集里的字符。ASCII表示American Standard Code for Information Interchange,它给出了美国标准的键盘与1到127数字之间的关系图。举例,'a'在关系图中的代号为97,'b'98。字符总是放在单引号里。 1: char chValue = 'a'; 2: char chValue 阅读全文
posted @ 2012-05-07 10:55 grassofsky 阅读(283) 评论(0) 推荐(0) 编辑
摘要:原文来自:http://www.learncpp.com/cpp-tutorial/26-boolean-values/布尔值只有两个可能的值:true(1)和false(0).用bool进行声明: 1: bool bValue;有两种方式进行赋值: 1: bool bValue1 = true; // explicit assignment 2: bool bValue2(false); // implicit assignment正如操作符-能够使得一个正数变成一个负数,逻辑操作符!能够将布尔型值取相反的一个。 1: 2: bValue1 = !true; // b... 阅读全文
posted @ 2012-05-06 23:34 grassofsky 阅读(311) 评论(0) 推荐(0) 编辑
摘要:原文form http://www.learncpp.com/cpp-tutorial/25-floating-point-numbers/当我们需要存储很大的数值,或有些数字具有小数部分时,可以使用浮点型。一个浮点型的变量能够存储一个实数,如4.0,2.5,3.33,0.1226。有三种不同的浮点数类型:float,double,long double。fload有4个字节,double有8个字节,这些并不是严格不变的。long double是在后来的版本中加入进去的。但是通常上来讲,它也是8个字节大小。浮点型数总是有符号的。下面是一些声明 1: float fValue; 2: d... 阅读全文
posted @ 2012-05-06 08:37 grassofsky 阅读(828) 评论(0) 推荐(0) 编辑
摘要:原文 from http://www.learncpp.com/cpp-tutorial/24-integers/整型的变量如-1,0,3,4。C++中含有四种不同的整型变量,char,short,int和long。这些整型之间唯一的不同点是它们占有的内存大小,更大的整型能够保存更大的数值。你可以用sizeof操作符查看具体的大小。在这个教程中,我们假设:a char is 1 bytea short is 2 bytesan int is either 2 or 4 bytesa long is 4 bytes声明一些变量: 1: char chChar; 2: short int ... 阅读全文
posted @ 2012-05-04 14:13 grassofsky 阅读(281) 评论(0) 推荐(0) 编辑
摘要:原文from http://www.learncpp.com/cpp-tutorial/23-variable-sizes-and-the-sizeof-operator/正如你在基本寻址一节中学到的,现代计算机中的内存是有字节大小的片段组成的,每个片段都有属于自己的唯一的地址。基于这一点,我们可以将内容想象成一系列邮件夹或邮箱,我们可以通过它来放置或获取信息,通过命名的变量来与它们相关联。但是,这种类比并不总是合理的,很多的变量通常占据不止一个字节的内存。因此,一个独立的变量也许 会使用2,4或8个连续的内存地址。变量使用的内存的大小取决于变量的类型。幸运的是,我们通常通过变量的名字联系内存 阅读全文
posted @ 2012-05-03 14:38 grassofsky 阅读(362) 评论(0) 推荐(1) 编辑
摘要:C++保留了63个词。这些词被称作关键词,在C++中其中每一个关键词都有自己特殊的意义。15个以*开头的关键词都是在最初的版本后加上去的,因此,早期的参考书或资料也许没有这些关键词。下面是一些列所有的C++关键词:asmautobool *breakcasecatchcharclass constconst_cast *continuedefaultdeletedodoubledynamic_cast * elseenumexplicit *export *externfalse *floatfor friendgotoifinlineintlongmutable *namespace * n 阅读全文
posted @ 2012-05-02 13:47 grassofsky 阅读(835) 评论(0) 推荐(0) 编辑
摘要:http://grass-and-moon.cnblogs.comfrom http://www.learncpp.com/cpp-tutorial/21-basic-addressing-and-variable-declaration/在前面关于变量的课程中,我们已经了解了变量时能够存储一定信息的内存片段的命名。简言之,计算机具有随机存取存储器能够被程序中的变量使用。当变量被声明的时候,一片内存段分配给变量。内存的最小单元是用二进制数表示的,比特,能够存取0和1.你可以把一个比特考虑成传统的灯的开关——当灯开的时候为1,关的时候为0.除了0和1没有别的选择。如果你查看一段内存,你能看到的仅 阅读全文
posted @ 2012-05-01 00:01 grassofsky 阅读(296) 评论(0) 推荐(0) 编辑

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