美文网首页C++编程基础与算法实例
7、C++基础:内存动态分配与释放、引用

7、C++基础:内存动态分配与释放、引用

作者: blueskylxb | 来源:发表于2016-11-18 14:52 被阅读36次
#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++基础:内存动态分配与释放、引用

    本文链接:https://www.haomeiwen.com/subject/lutspttx.html