C++学习

1、C++中引用和指针的区别
指针保存的是一个对象的地址,引用是这个对象的别名。
int a = 1;
int * p = &a;
这里变量a和指针p本身地址是不一样的。

int a = 1;
int &b = a;
这里变量a和引用变量b的地址是一样的,两个变量指向同一个内存地址。

主要区别:
引用变量不能为空,在定义时必须初始化。
引用变量初始化后,引用的对象不能再改变。b引用了a后,不能再引用c变量。

总结:
指针指向一块内存,它的内容是所指内存的地址;而引用则是某块内存的别名,引用不改变指向。

指针和引用作为函数参数进行传递时的区别:
传值调用、传址调用、引用调用中传址调用、引用调用都可以改变传入的实参的值。
区别在于指针调用也是将指针变量的值(所指向变量的地址的拷贝)传入形参,在函数内修改所指向变量的值。
引用调用直接把实参传入了函数内,修改了形参就修改了实参。

2、__cdecl和__stdcall区别
两者的区别是清栈方式不同,如果使用__stdcall由函数自己清栈,如果使用__cdecl由调用者自己清栈。

当函数参数个数不定时,只能使用__cdecl来说明函数的调用方式。
如:int sprintf(unsigned char *out, const unsigned char *format, …)

3、类中的静态变量和静态函数
类中的静态变量是属于类的不属于某个对象,它是所有对象所共用的。
静态数据成员需要单独初始化:
<数据类型><类名>::<静态数据成员名>=<值>

静态成员函数可以使用静态数据成员,非静态数据成员要通过具体对象来引用(因为静态成员函数没有this指针)。
静态成员函数主要为了调用方便,不需要生成对象就能调用。
继续阅读C++学习