1.字符常量'A'与字符串常量"A"不同,'A’只是一个字符,没有长度;"A"是由'A'和'\0'两个字符组成,长度为2。
2. short——2字节
int——4字节
long int——4字节
float——4字节
double——8字节
long double——10字节
3.函数返回值的类型与函数定义中函数的类型标识符应一致,若不一致,则一函类型标识符为准,自动进行类型转换。
4.如果函数值为整型,在函数定义时可以省去类型标识符。
5.为了减低程序出错的几率,凡不要求返回值的函数,都应定义为空类型。
6.只有在发生函数调用时,函数的形参才被分配内存单元,在调用结束后,形参所占的内存单元也被释放。
7.如果函数传递的实参是结构体,值传递方式的效率是低下的,可以通过传指针或使用变量的引用来替换传值调用。
8.递归的运行效率是比较低的,无论从时间角度还是空间角度都比非递归程序差。
9.static变量,作用域与自动变量相同,在函数内定义就只能在函数内使用,尽管该变量没有被释放,但不能在外部使用它,如果再次调用该函数吗,它又可以继续使用。
10.变量存储类别:
1)auto:默认存储类型,可省略,动态存储,分配在内存栈中
2)static:静态存储,程序运行期间不释放
3)register:寄存器变量,动态存储,编译器会自动决定哪个变量使用寄存器存储
4)extern:源文件使用其他源文件中定义的变量,使用extern修饰。
11.字符数组不能直接给字符数组赋值。
12字符串处理函数:
1)strcat:;两个字符串
2)strcpy:复制字符串
3)strcmp:比较字符串,按ASCII码大小比较
4)strlen:测字符串长度(不包含结束标志‘\0’)
13.指针就是指针变量,它是一个专门用来存放地址的变量;
变量的指针指变量在内存中的地址。
14.指针一定要赋值
15.{int a=100;int *p = &a;}
*p:相当于变量a;
&*p:a进行&运算,相当于取a的地址;
&a:取a的地址;
*&a:相当于变量a。
16.指针常量:int *const p 无法改变内存地址,但可以改变它指向的内存内容
常量指针:int const* p 内存地址可以改变,但内存内容不可改变
指向常量的指针常量:int const * const p 无法改变地址也无法改变内容。
17.若内存被销毁,则指向该内存的指针值将变得不可预知。
18.new关键字返回新分配的内存单元的地址。
19.栈:定义的变量的值会如果没有申请动态分配的方式,则它的值将会放到栈中,回收又程序自动控制;
堆:申请动态分配的方式去存储某个变量时,将会放入堆中,申请和销毁需要手动控制。
20.引用:是对象的一个别名,被初始化后无法再去引用其他对象,对它的操作与原来对象的操作具有相同的作用,主要用来传递参数。
21.枚举类型的初始化:
如enum xx{a,b=4,c,d,e};b初始化为4,结果a仍然为0,c为5,d为6.
22.共用体:所占内存长度等于最长成员的长度,某一时刻只能存放其中一个成员的值,就是最后赋予它的值。不能对共用体变量赋值;不能在定义共用体的时候对它初始化;不能用共用体变量名作为函数参数。
23.宏定义:#define SUB(x,y) (x)+(y)
在宏定义的时候,宏名与带参数的括号之间不能加空格,否者将空格以后的字符都作为替代字符串的一部分
带参数的宏定义中,形参不分配内存单元,不必做类型定义。
24.域运算符:”::“
25.class CBook{
public:
static unsigned int m_Price;
Cbook mBook; //非法定义,不予许在类中定义所属类 的对象
static CBook m_VCbook;//正确,静态数据成员允许定义 类的所属类对象
CBook *m_pBook; //正确,允许定义类的所属类的指针类型对象
}
26.类的静态成员函数只能访问类的静态数据成员,不能访问普通的数据成员。
27.在定义静态成员函数时,如果函数的实现在类体之外,则在函数实现部分不能再用static关键字。
28.对于类的非静态成员,每个对象都有自己的数据成员,不过成员函数是每个对象共享的。
29.嵌套类:类体中再定义类
局部类:函数体中定义类。