黑马程序员匠心之作-C++核心编程-C++中的内存和引用
学习最快的方法就是给别人讲解,把博客当作我的学生啦,听课过程中归纳整理一下:
**1.内存四区
1 代码区(共享和只读):局部变量(在函数内部定义的是局部变量)
2 全局区:全局变量,静态变量(static关键字),常量
在这里插入代码片
3 栈区(编译器分配释放):函数形参、局部变量(指针是局部变量)
int* func(){
int a=10;//局部变量,存放在栈区,栈区的数据在函数执行后自动释放
return &a//奴要返回局部变量地址
}
int main(){
int *p=func();
count<< "*p"<<endl
system("pause")
}
4 堆区:
//用new,在堆区开辟新内存
//
int * func(){
int *p=new int(10);//指针接受堆区的地址
return p;}
int main(){
int *p=func();
delete p;
cout<< *p<<endl;
}
//delete手动释放
```cpp
int main(){
int *arr=new(int[10]);
for (int i=0;i<10;i++)
{arr[i]=i=100;}
for(int i=0;i<10;i++)
{cout<< arr[i]<<endl;}
delete[] arr;
system("pause")
return 0;
}
**2.引用
语法:数据类型 &别名=原名
int &b=a;
引用可以形参修饰实参
引用的本质在c++内部实现是一个指针常量
1.值传递
void myswap01(int a,int b){
int temp=a;
a=b;
b=temp
}
2.地址传递
void myswap01(int *a,int *b){
int temp=*a;
*a=*b;
*b=temp
}
2.引用
void myswap03(int &a,int &b){
int temp=a;
a=b;
b=temp
int main(){
int a=10;
int b=20;
myswap03(a,b)
}
}
常量引用
使用场景用来修饰形参防止误操作
const int &ref =10;//只读不可修改