1、标识符命名规则:
(1)由英文字母、数字和下划线组成;
(2)英文字母的大小要加以区别;
(3)不允许使用数字开头;
(4)不能用C++中的关键字。
2、C++提供了 const 关键字声明常量,const 表示一个“常值变量”,即不能改变值的变量。
3、4294967295是32为CPU寄存器以及Visual C++6.0编译器所允许的最大正整数。
4、整型常量:
(1)十进制整型常量:十进制整型常量由0~9的数字组成。不能以 0 开头,没有小数部分。
(2)八进制整型常量:八进制形式整型常量必须以 0 开头,即以 0 作为八进制数的前缀。
(3)十六进制整型常量:十六进制整型常量的前缀为 0X 或 0x。由0~9的数字和A~F(a~f大小写相同)的字母组成。
实型常量:
(1)小数表示法;
(2)科学记数法:指数部分以符号“e”或“E”开始,但必须是整数,并且符号“e”或“E”两边都必须有至少一位数。例如:1.2e20, -3.4e-2
5、数据类型:
类型 所占字节数
char 1
bool 1
short 2
int 4
long 4
float 4
double 8
long doubel 8
6、易错:
1
2
3
|
cout<<135/25<<endl;
//输出:5
cout<<135.0/25<<endl;
//输出:5.4
char
arr[5] =
"Hello"
;
//错误的代码,数组溢出
|
7、在计算机中,数据都是以二进制形式表示,以字节为最小单位进行存储。
8、共用体的内存空间可以用来存放多种不同类型的成员,但是在某一瞬时只有一个成员起作用,而起作用的成员是最后一次存放的成员。
9、大写字母的ASCII码是从65开始的,而小写字母的ASCII码是从97开始的,所以只要将原字符的ASCII码加上32就可以获得对应的小写字母了。
10、尽量不要在同一段代码中的复合语句内外定义同名的变量,虽然这样是合法的,但是不利于程序的阅读,也容易出现逻辑错误。
11、switch语句中的break语句属于跳转语句,在switch语句中,当遇到break语句时,程序将跳转到switch语句之后的下一行代码处。如果switch语句中没有使用break语句,当表达式与某个常量匹配时,将执行当前case语句代码,并且继续向下执行case语句的代码。直到遇到break语句或者switch语句结束。
12、在程序中使用do while语句时,不要忘记while 语句部分在末尾要添加分号。
13、break语句跳出本层循环;continue语句跳出本次循环。
14、在程序设计中建议少用、慎用goto 语句,但是并不是禁用goto 语句,在嵌套的循环语句中,goto 语句可以直接跳出所有外层循环。
15、return语句将退出当前函数,返回到调用该函数的地方,开始执行吓一跳语句;
exit 语句用于终止当前调用的进程,通常用于结束当前的应用程序。
16、在函数调用的时候要注意是传值调用还是传址调用。
17、省略号“…”也是参数,代表函数的参数是不固定的,可以传递一个或多个参数。
18、重载函数是指多个函数具有相同的函数名称,而参数类型或参数个数不同。
(1)函数的返回值类型不作为区分重载函数的标识;
(2)对于普通的函数参数来说const 关键字不作为区分重载函数的标识;
(3)如果参数的类型是指针或引用类型,则const 关键字将作为重载函数的标识;
(4)参数的默认值不作为区分重载函数的标识;
(5)使用typedef 自定义类型不作为重载的标识。
19、在C++中定义类时,类名通常以答谢字母C开头,成员变量以“m_”为前缀,这是一个约定俗成的习惯。
20、定义类的成员变量与定义普通的变量有所不同,那就是不能够在定义时对成员变量进行初始化。
21、析构函数不能够被重载,一个类只能有一个析构函数。
22、当定义一个类对象时,首先从顶层依次调用基类的构造函数,最后调用自身的构造函数;析构函数的调用顺序与构造函数正好相反,首先调用自身的析构函数,然后依次调用基类的析构函数。
23、对于多继承,C++语言提供了虚继承的机制,虚继承使得子类中只存在一个基类。
24、定义宏时,最好对每个数据加上括号,防止造成二义性问题,宏定义只是简单的替换。
25、在C语言中,const的用法主要有定义常量、修饰函数参数、修饰函数返回值等3个用处。在C++程序中,它还可以修饰函数的定义体,定义类中某个函数为恆态函数,即不可改变类中的数据成员。
26、内联函数inline是指嵌入代码,就是在调用函数的地方不是跳转,而是直接把代码写到那里去。
27、const常量赋值时,必须同时初始化;声明一个引用,引用不能为空,同时必须初始化。
28、C++的空类默认产生四个函数:默认构造函数、析构函数、拷贝构造函数和赋值函数。
29、面向对象技术的基本概念是:类、对象、继承。
30、struct 与class 的区别在于:struct中变量默认是public, class中变量默认是private。
31、类中的成员变量要初始化必须是在构造函数中或将其设置为static。
32、析构函数可以是内联函数。
33、析构函数可以是virtual 虚函数类型,但构造函数则不能。
34、覆盖(override)的函数必须有一致的参数表和返回值;重载(overload)是指编写一个与已有函数同名但参数表不同的函数。
35、虚继承就是为了节约内存的,他是多重继承中的特有的概念。适用与菱形继承形式。
虚函数继承就是覆盖。即基类中的虚函数被派生类中的同名函数所覆盖。
36、左移运算符(<<)是双目运算符,其功能是把"<<"运算符左边的运算数的各二进位全部左移若干位,移动的位数由"<<" 运算符右边的数指定,高位丢弃,低位补0。 如:a<<2 //代表a的二进数向左移动2位。实际上左移一位相当于该数乘以2,称动2位 相当于该数乘以4,以此类推。这种情况只限于移动位不含1的情况。
右移运算符(>>)是双目运算符,其功能是把">>"运算符左边的运算数的各二进位全部右移若干位,移动的位数按">>" 运算符右边的数指定。在进行右移时对于有符号的数需要注意符号问题,当为正数时,最高位补0,而为负数时,最高位补0或1取决于编译 系统的规定,移入0的称为"逻辑右移",移入1的称为"算术右移"。(visualC++)是以算术右移。
37、C语言判断汉字:
1
2
3
4
5
6
7
|
if
(is_zh_ch(
char
p)!=0);
int
is_zh_ch(
char
p)
{
if
(~(p >> 8) == 0)
return
0;
return
-1;
}
|
和文字表示方法有关。西文字符一个字节(char)就可以表示(ASCII码中包括了所有的西文字符),因为一个char只有8位,最多表示256个文字,因此而非西文字符的文字(UNICODE)全部用两个字节表示,机器内部的最小存储单位是字节,为了区分连续的两个char表示的是一个UNICODE还是两个西文字母,规定UNICODE码的两个字节的最高位都是1。
1
2
|
if
(~(p >> 8) == 0)
return
0;
|
的意思是,将char p的符号位(char为8位,即最高位)右移,若是UNICODE则p>>8后为1111 1111,然后按位取反为0
其实原理上面说过了,UNICODE码最高位为1,即符号位为1,上面的代码和下面的等价:
1
2
3
4
5
6
|
int
is_zh_ch(
char
p)
{
if
(p<0)
return
0;
return
-1;
}
|
转自http://my.oschina.net/Jacedy/blog/343354