接近半年没有写程序了,昨天帮别人写一个GUID的生成程序,突然忘了头文件是如何包含的...晕,的确该学习了

从今天开始我的C++之旅,以前也看过这本书,但仅限于看过,没有深究,今天重新搬出这块砖头,从最基本的开始学习,应该会有不少收获吧
第三章开始讨论了C++中的数据类型,虽然标题仅仅是数据类型,但关于程序设计的思想:flexible,modular,reusable,understandable;始终是贯穿本书的.C++中最优秀的两个方面,面向对象以及泛型化,面向对象使得程序更加模块化和可读性,泛型化使得程序更加可扩展和可重用.HHou,感觉有些偏离主题了,言归正传...
第一节中讲了文字常量,为什么称为常量?因为其无法寻址,即我们无法人为改变这个值.字符串常量由零个或多个包含在双引号内的字符常量组成,零个即空字符串.字符串文字的类型是字符常量数组,它由本身的数据内容以及编译器加上的空Null字符构成.宽字符文字以及宽字符串文字的构成方法与普通的一样,但由一点要注意:
"My" "Girl",这两个字符串在程序中相邻,C++会将其连接,输出"MyGirl"
同理,L"My" L"Girl",这两个宽字符串在程序中相邻,也将输出"MyGirl"
但是不要将字符串与宽字符串相邻,即"My" L"Girl",即使编译器能够将其输出为"MyGirl",但是不能保证其他编译器也可以,因为这并不是一种标准的行为,建议不要这样使用.
为什么变量能够改变?因为变量为我们提供了一个带名称的内存存储区域,通过这个名称,程序可以对该内存进行操作;每一个变量都存在一个特定的数据类型,这样就决定了该内存的大小,布局,以及范围和可执行的操作.
变量的定义可以在全局区域(global scope)内,或是局部(local scope)及通过new动态生成;在全局区域内定义,编译器会自动为其指定一个初始值0;而局部或是动态定义,则是未初始化,但并不是没有值,而是未定义,该值是关联的内存中前次使用的值.建议在定义每个对象时,都为其指定一个初始值,因为使用一个未被定义的对象将是一个很难发现的错误.
指针也是一种变量,它持有的是某个对象的内存地址,通过指针能够间接的对该对象进行操作.指针的定义通过解引用操作符*来完成,如下:
string *ps;如果书写方式是string* ps;也能完成想法,但是这不是一种好的编程风格,可能会导致一些潜在的错误,如,某甲想添加另一个指针ps2,那么他很可能直接在后面加,如:string* ps,ps2,但是事实上这里ps2并不是一个指针,而是一个普通的string对象.当一个指针被赋值为0时,表明它没有指向任何对象,建议定义时这样做.指针不能初始化或是赋值为其他类型的指针,或是非地址值;这样都会导致编译时错误.void型指针,仅能够存储地址值或是传输地址或地址值比较,而不能做其他解析相关地址的操作,因为该地址的布局大小都是未知的.指针也能像普通变量一样,进行加减运算,但是这里加减不同于普通变量,而是与其指针的类型关联,int型指针加2,则是将其地址值前移8个字节(但是会否在边界出现地址越界?能否进行乘除运算呢?查).一般这类操作只在数组中有意义,因为只有数组才能保证其地址连续.(如果是数组上的这类操作,则不会发生地址越界)
もう一頑張り…
--Over--明天继续---
贴几张MM


放松一下
去年东京车展的照片...

更喜欢这辆车:

这个MM


我最喜欢了, 可惜

