指针与变量(或数组)的动态创建与释放

1、变量内存的动态分配(创建)与释放:通过指针,动态间接赋值、取值

指针变量名=new 数据类型(初始值); 初始值可省略,后边再赋值。

delete 指针变量名;

#include<iostream>
using namespace std;
int main() {
    //int *p = new int; *p = 5;
    int *p = new int(5);//new运算符,动态创建一个int型变量(无变量名),值为5。
    cout << *p;//输出所指地址的值
    delete p;//释放指针变量的内存空间
    return 0;
}

2、一维数组的动态分配(创建)与释放:

指针变量名=new 数据类型[正整数常量、变量或表达式];

delete [ ]指针变量名;

#include<iostream>
using namespace std;
int main() {
    int *p = new int[5];//new运算符,动态创建一个int型数组(无数组名)。
    *(p + 1) = 10;//赋值第2个元素
    //或p[1]=10;
    cout << p[1];//输出所指地址的值
    delete []p;//释放指针变量数组的内存空间
    return 0;
}

显示Fibonacci数列的前N项,0,1,1,2,3,5,8,…

#include<iostream>
using namespace std;
int main() {
    int N;
    cin >> N;

    int *p = new int[N]; //动态创建包含N个元素的数组
    p[0] = 0; p[1] = 1;//给定第1、2元素的值,等效*p=0;*(p+1)=1;
    for (int i = 2; i < N; i++){
        p[i] = p[i - 1] + p[i - 2];
    }
    for (int i = 0; i < N; i++)
    {
        cout << p[i] << " ";
    }
    delete []p;//释放指针变量数组的内存空间
    return 0;
}