此份笔记包含C++面向对象和STL部分,之前学习时自己记录的,希望对大家学习C++有所帮助。
代码区:存放函数体的二进制代码,由操作系统进行管理
全局区:存放全局变量和静态变量以及常量
栈区:由编译系统自动分配释放,存放函数体的参数值(形参),局部变量等
堆区:由程序员分配和释放(指针),若程序员不释放,程序结束时由操作系统自动回收
引用必须要初始化;int &b;是错误的
引用一旦初始化后,就不可以更改了;比如b是a的别名 不能改成c的别名
不会改变实参的值(形参不会修饰形参);
会改变实参的值(形参会修饰形参)
调用:
myswap(&a,&b);
函数用指针来接收地址:
void myswap(int *a,int *b ){
int temp;
temp=*a;
*a=*b;
*b=temp;
}
函数形参的ab相当于主函数ab的别名,只不过别名和实参的变量名是一样的,交换时就可以直接用ab进行赋值
调用:
myswap(&a,&b);
函数用指针来接收地址:
void myswap(int &a,int &b ){
int temp;
temp=a;
a=b;
b=temp;
}
局部变量的值系统会保存一次,第二次就会乱码
int &ref=test();
test()=1000;
cout<<ref;
输出为1000;
结论:如果函数的返回值是引用,这个函数调用可以作为左值
引用的本质在C++内部实现是一个指针常量
int a=10;
int & ref=a;//实质上是int* const ref=&a;指针常量是指针指向不可改,也说明为什么引用不可改
ref=20;//内部发现ref是引用,自动帮我们转换为*ref=20;
const修饰形参,防止误操作;
void showValue(const int &val){//函数体内部就不能修改val的 值了}