随笔分类 -  C++学习

摘要:C++/C学习笔记(五)1.指针(1)指针类型及支持的运算指针是变量,在二进制层面,指针的值就是内存单元的地址,而变量又是引用内存单元的值的别名,因此在语言层面指针的值就是变量的地址。指针的类型为一个类型名和字符“*”的组合。但编译器解释的时候,“*”是和其后的变量名结合的。例如:int*a,b,c;编译器会理解为:int*a,b,c;即只有a是int类型的指针,而b和c仍然是int类型的变量。不管指针变量是全局的还是局部的、静态的还是非静态的,应当在声明它的同时初始化它,要么赋予它一个有效的地址,要么赋予它NULL,否则为野指针,运行程序时会出现错误。指针加减一个正整数i,其含义并不是在其值 阅读全文
posted @ 2012-08-06 12:02 微雪 阅读(279) 评论(0) 推荐(0)
摘要:static关键字 1.作用于变量: 用static声明局部变量-------局部变量指在代码块{}内部定义的变量,只在代码块内部有效(作用域),其缺省的存储方式是自动变量或说是动态存储的,即指令执行到变量定义处时才给变量分配存储单元,跳出代码块时释放内存单元(生命期)。用static声明局部变量时,则改变变量的存储方式(生命期),使变量成为静态的局部变量,即编译时就为变量分配内存,直到程序退出才释放存储单元。这样,使得该局部变量有记忆功能,可以记忆上次的数据,不过由于仍是局部变量,因而只能在代码块内部使用(作用域不变)。 用static声明外部变量-------外部变量指在所有... 阅读全文
posted @ 2012-08-05 15:08 微雪 阅读(1899) 评论(0) 推荐(0)
摘要:1.CDataExchange没有基类。 CDataExchange支持Microsoft基本类使用的对话数据交换(DDX)和对话框数据验证(DDV)例程。当要为自定义数据类型或控件写数据交换例程和数据验证例程时使用这个类。CDataExchange对象提供了发生DDX和DDX所需要的上下文信息。DDX用于填充来自数据成员到对话控件的初始值时,标记m_bSaveAndValidate为FALSE。如果DDX用来设置对话控件的当前值到数据成员并且用DDV验证数据值有效性,标志m_bSaveAndValidate为TRUE。如果DDV有效性失败,DDV过程将显示解释输入错误的消息框。然后DDV调. 阅读全文
posted @ 2012-08-03 08:58 微雪 阅读(359) 评论(0) 推荐(0)
摘要:1.存储类型标准C语言为变量、常量、函数定义了4种存储类型:extern,auto,static,register,它们分别用一个关键字(存储类型说明符)来说明。这4种存储类型可分为两种生存期限:永久的(即整个程序执行期间都存在)【extern和static】和临时的(即暂时保存在堆栈和寄存器中)【auto和register】。全局变量和全局函数默认存储类型为extern,能够被定义在它们之后的同一个编译单元内的函数所调用,如果变量和函数被显式地加上extern声明,那么其他编译单元中的函数也能调用它们。若变量和函数被显式地加上static声明,那么它们具有static存储类型,只能被同一个编 阅读全文
posted @ 2012-08-02 11:06 微雪 阅读(895) 评论(0) 推荐(0)
摘要:1.函数原型和定义函数原型的格式:[作用域][函数的连接规范]返回值类型[函数的调用范围]函数名(类型1[形参名1],类型2[形参名2],...);形参:在函数原型或定义及catch语句的参数列表中被声明的对象或指针、宏定义中的参数、模版定义中的类型参数等。实参:函数调用语句中以逗号分隔的参数列表中的表达式、宏调用语句中以逗号分隔的列表中一个或多个预处理标识符的序列、throw语句的操作数、表达式的操作数、模版实例化时的实际类型参数等。函数调用中参数传递的本质就是用实参来初始化形参而不是替换形参。2.函数调用一般函数支持3种调用方式:像过程一样调用,嵌套调用,递归调用。若函数没有返回值,则不能 阅读全文
posted @ 2012-08-01 15:37 微雪 阅读(287) 评论(0) 推荐(0)
摘要:1.强制转换(1)基本数据类型转换(值的截断)例如:doubled3=1.25e+20;doubled4=10.25;inti2=(int)d3;inti3=(int)d4;按照浮点数到整数的转换语意,结果应该是截去浮点数的小数部分而保留其整数部分,因此i3会得到10,而i2会溢出,因为d3的整数部分远远超出了一个int所能表示的范围,结果当然不正确。(2)基本数据类型的指针转换(内存截断)基本数据类型之间的指针转换一般来说必然会造成内存截断或内存访问范围的扩张,除非两种类型具有相同的字节大小。在32位系统中,int,long,float都具有4字节的空间,虽然不会造成内存截断或内存扩张,但是 阅读全文
posted @ 2012-07-31 17:18 微雪 阅读(522) 评论(0) 推荐(0)
摘要:1.堆内存分配 :C/C++定义了4个内存区间: 代码区,全局变量与静态变量区,局部变量区即栈区,动态存储区,即堆(heap)区或自由存储区(free store)。堆的概念:通常定义变量(或对象),编译器在编译时都可以根据该变量(或对象)的类型知道所需内存空间的大小,从而系统在适当的时候为他们分配确定的存储空间。这种内存分配称为静态存储分配; 有些操作对象只在程序运行时才能确定,这样编译时就无法为他们预定存储空间,只能在程序运行时,系统根据运行时的要求进行内存分配,这种方法称为动态存储分配。所有动态存储分配都在堆区中进行。当程序运行到需要一个动态分配的变量或对象时,必须向系统申请取得堆中的一 阅读全文
posted @ 2012-07-31 15:52 微雪 阅读(22711) 评论(0) 推荐(1)