美文网首页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