指针:
int *p = 0;
p表示存储另一个变量的内存地址
&p表示自己在内存中的地址
数据内存中的存放共分为以下几种形式:
1.栈区:由编译器自动分配并且释放,该区域一般存放函数的参数值、局部变量的值等。
2.堆区:一般有程序员分配释放,若程序员不释放,程序结束时可能有操作系统回收。
3.寄存区:用来保存栈顶指针和指令指针。
4.全局区(静态区):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后
由系统释放。
5.文字常量区:常量字符串释放在这里,程序结束由系统释放。
6.程序代码区:存放函数体的二进制代码。
int* cont p;(常量指针)不能修改自身的值,p指向的对象可以修改。
const int* p;(指向常量的指针)能够修改自身的值,p指向的对象不能修改。
const int* const p(指向常量的常量的指针),不能够修改自身的值,p指向的对象也不能修改。
引用:
1.引用就是别名
int num;
int &mum = num;//mum就是num的别名。指向同一个对象。
2.定义一个引用时必须初始化。
eg:
int a;
int &ra = a;//ok
int &rb;
rb = a;//error
class A(){
public:
A(){}//构造函数
A(&A){}//复制构造函数
~A(){}//析构函数
};
int *p = 0;
p表示存储另一个变量的内存地址
&p表示自己在内存中的地址
数据内存中的存放共分为以下几种形式:
1.栈区:由编译器自动分配并且释放,该区域一般存放函数的参数值、局部变量的值等。
2.堆区:一般有程序员分配释放,若程序员不释放,程序结束时可能有操作系统回收。
3.寄存区:用来保存栈顶指针和指令指针。
4.全局区(静态区):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后
由系统释放。
5.文字常量区:常量字符串释放在这里,程序结束由系统释放。
6.程序代码区:存放函数体的二进制代码。
int* cont p;(常量指针)不能修改自身的值,p指向的对象可以修改。
const int* p;(指向常量的指针)能够修改自身的值,p指向的对象不能修改。
const int* const p(指向常量的常量的指针),不能够修改自身的值,p指向的对象也不能修改。
引用:
1.引用就是别名
int num;
int &mum = num;//mum就是num的别名。指向同一个对象。
2.定义一个引用时必须初始化。
eg:
int a;
int &ra = a;//ok
int &rb;
rb = a;//error
class A(){
public:
A(){}//构造函数
A(&A){}//复制构造函数
~A(){}//析构函数
};