#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;
}
网友评论