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;
}

全部评论

相关推荐

霁华Tel:秋招结束了,好累。我自编了一篇对话,语言别人看不懂,我觉得有某种力量在控制我的身体,我明明觉得有些东西就在眼前,但身边的人却说啥也没有,有神秘人通过电视,手机等在暗暗的给我发信号,我有时候会突然觉得身体的某一部分不属于我了。面对不同的人或场合,我表现出不一样的自己,以至于都不知道自己到底是什么样子的人。我觉得我已经做的很好,不需要其他人的建议和批评,我有些时候难以控制的兴奋,但是呼吸都让人开心。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务