C++核心编程学习指南

内存分区

  • 程序运行前
  1. 代码区:共享、只读;
  2. 全局区:存放全局变量、静态变量、常量(字符串常量、const修饰的全局常量),数据在程序结束后由操作系统释放
  • 程序运行后
  1. 栈区:存放局部变量,注意不要返回局部变量的地址,栈区开辟的数据由编译器自动释放
  2. 堆区:由程序员分配释放,若程序员不释放,程序结束时由操作系统回收

开辟内存:new关键字,如:

	int* a = new int(10);
	int* arr = new int[10];//开辟数组

释放内存:delete关键字

	delete p;
	delete[] arr;//释放数组

引用

引用就是给变量起小名,但其本质在c++内部实现是一个指针常量

  • 引用做函数参数
    函数传参时,可以利用引用的技术让形参修饰实参,简化指针修改实参。值传递、地址传递、引用传递比较:
  1. 值传递
    值传递中形参变化而实参不变。
void mySwap01(int a, int b) {
   
	int temp = a;
	a = b;
	b = temp;
}
int main() {
   

	int a = 10;
	int b = 20;

	mySwap01(a, b);
	cout << "a:" << a << " b:" << b << endl;

	system("pause");
	return 0;
}

  1. 地址传递
    地址传递形参、实参均改变。
void mySwap02(int* a, int* b) {
   
	int temp = *a;
	*a = *b;
	*b = temp;
}
int main() {
   

	int a = 10;
	int b = 20;

	mySwap02(&a, &b);
	cout << "a:" << a << " b:" << b << endl;

	system("pause");
	return 0;
}

  1. 引用传递
    引用传递形参、实参均改变,效果和地址传递一样,好理解。
void mySwap03(int& a, int& b) {
   
	int temp = a;
	a = b;
	b = temp;
}
int main() {
   

	int a = 10;
	int b = 20;

	mySwap03(a, b);
	cout << "a:" << a << " b:" << b << endl;

	system("pause");
	return 0;
}

全部评论

相关推荐

11-14 16:13
已编辑
重庆科技大学 测试工程师
Amazarashi66:不进帖子我都知道🐮❤️网什么含金量
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务