#include <iostream>
using namespace std;
// 内存分配和释放
void Memory(){
int *p = new int; // 动态申请内存
cin >> *p;
cout << *p << endl;
delete p;
int *q = new int(5); // 动态申请内存并赋值
cout << *q << endl;
delete q;
int *m = new int[5];
for (int i = 0; i < 5; ++i) {
*(m+i) = i+1;
}
for (int i = 0; i < 5; ++i) {
cout << *(m+i) << '\t';
cout << endl;
}
delete[] m; // 删除内存,delete[]针对数组
}
// 引用
void Reference(){
int a;
int &b = a; // 引用:a取了一个别名叫b,所有对b的操作都是直接作用于a,a和b指向同一个地址
b = 5;
cout << a << endl;
cout << &a << endl;
cout << &b << endl;
b++;
cout << a <<':' << b << endl;
cout << &a << endl;
cout << &b << endl;
}
// 函数参数引用
int fun(int &n){
return (n++)-1;
}
void ReferenceParam(){
int a = 5;
cout << a << endl;
cout << fun(a) << endl;
cout << a << endl;
}
// 外部变量 extern
// extern是C/C++语言中表明函数和全局变量作用范围(可见性)的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用
// extern int a;仅仅是一个变量的声明,其并不是在定义变量a,并未为a分配内存空间。变量a在所有模块中作为一种全局变量只能被定义一次,否则会出现连接错误
// 与extern对应的关键字是static,被它修饰的全局变量和函数只能在本模块中使用。
void ExternParam(){
extern int a;
cout << a << endl;
a++;
cout << a << endl;
}
int a = 7;
extern const int b = 2;
extern const int c;
void ExternConstParam(){
cout << b << endl;
cout << c << endl;
}
const int c = 3;
int main(void){
cout << "内存分配和释放" << endl;
Memory();
cout << "\n引用" << endl;
Reference();
cout << "\n函数参数引用" << endl;
ReferenceParam();
cout << "\n外部变量" << endl;
ExternParam();
cout << "\n外部常量" << endl;
ExternConstParam();
return 0;
}
7、C++基础:内存动态分配与释放、引用
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- Nginx+tomcat是目前主流的Java web架构,如何让nginx+tomcat同时工作呢,也可以说如何使...