#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同时工作呢,也可以说如何使...