1.在C++/C中,全局变量(extern或static)存放在程序的静态数据区中,在程序进入main()之前创建,在main()结束之后销毁,因此在我们的代码中根本没有机会初始化它们,于是语言及其实现就提供了一个默认的全局初始化器0.如果你没有明确地给全局变量提供初值,编译器就会自动地将0转换为所需要的类型来初始化它们.函数内的static局部变量和类的static数据成员都具有static存储类型,因此最终被移到程序的静态数据区中,也会被默认初始化为0,除非你明确地提供了初值.但是自动变量的…
*switch结构的break语句只是一个“jmp”指令,其作用就是跳到switch结构的结尾处 *标准C++/C语言提供3种循环:do/while.while和for,它们都在条件表达式为TRUE(非0值)时执行体内的语句序列.可以使用它们中的任何一种来编写确定循环或不确定循环,但是建议:如果你的循环是确定的,最好使用for结构,否则使用while结构,do/while结构不常用. ==============================数组的存储=====================…
*标准C规定,编译器只取前31个字符作为有效的标识符,而标准C++则取前255个字符作为有效的标识符. *把具有特殊含义的字符输出到终端上,尤其是当它们出现在普通字符串或格式控制字符串中时,一般来说有两种办法:使用转义序列或者直接引用ASCII码值.…
复习: C/C++高质量编程指南: [规则1-2-1]为了防止头文件被重复引用,应当用ifndef/define/endif结构产生预处理块. [规则1-2-2]用 #include <filename.h> 格式来引用标准库的头文件(编译器将从标准库目录开始搜索). [规则1-2-3]用 #include “filename.h” 格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索). [建议1-2-1]头文件中只存放“声明”而不存放“定义” [规则2-2-1]一行代码只做一件事情…
指针: 指针是变量,和平时的那些变量没有本质的差异,不同的只是它的值和类型,.,即解释方式 二进制层面:指针的值是内存单元的地址,而变量是引用内存单元值的别名 语言层面:指针的值就是变量的地址. 对象的内存地址就是它的指针. 类型名和“*”组合起来一个指针类型,但是“*”是与后面的指针变量名先结合的 void*指针不能参加算术运算 不能对字面常量来取址,因为它是保存在符号表中的 数组: 数组是内存中的一段连续内存, 下标操作符返回的就是元素的引用,当使用[]时,其实编译器自动的将其转化为指针的表…
• free()和delete只是把指针所指的内容给释放掉,并没有把指针本身删掉.指针被free()或delete以后其地址仍然不变(不等于NULL),只是该地址对应的内存是垃圾——p成了野指针.如果此时不把p设置为NULL,会让人误以为p是个有效指针.在继续使用p之前,使用语句if(p!=NULL)进行防错处理,此时if语句起不到防错作用,因为即便p不是NULL指针,也可能不再指向合法的内存块. •“野指针”不是NULL指针,是指向“非法”内存的指针…