c++基础之new和delete(动态数组、动态结构体)

1. new和delete

1.1 基本概念

c++基础之new和delete(动态数组、动态结构体)_第1张图片

 c++基础之new和delete(动态数组、动态结构体)_第2张图片

1.2 new和delete使用规则

c++基础之new和delete(动态数组、动态结构体)_第3张图片

1.3代码实例

#include 
using namespace std;

//new和delete运算符
int main()
{
    //使用new 分配一个int类型的空间
    int* p = new int;
    *p = 100;
    cout << *p << endl;
    //使用完了以后对内存进行释放
    delete p;
    //释放的是p指向的内存,但是不会删除指针变量p本身,p可以重新指向另一个新分配的内存块。
    return 0;
}

2. 动态数组 

#include 
using namespace std;

//创建动态数组
int main()
{
    //typeName* parr=new typeName[元素的个数]
    
    //int num = 10;
    // int arr[num];    //会报错,这种方式创建数组要求括号中是常量值
    //int* p = new int[num];   //这样是可以的
    int* p = new int[5];

    //对动态数组进行操作
    *p = 10;
    p[1] = 20;

    cout << p[0] << endl;//10
    cout << p[1] << endl;//20
    cout << p[2] << endl;//不确定值
    //释放动态数组的内存
    delete[] p;
    return 0;
}

3. 动态结构体

#include 
#include
using namespace std;

//创建动态结构体
//定义一个结构体
struct student {
    string name;
    int age;
    double height;
};

int main()
{
    //student stu = { "tom",20,178.5 }; //普通结构体变量
    //student* p_stu = &stu;  //指针类型
    //动态结构体
    student* p_stu = new student;
    //访问方式1
    (*p_stu).name = "hello";
    (*p_stu).age = 18;
    (*p_stu).height = 178.5;
    cout << (*p_stu).name << "\t" << (*p_stu).age << "\t" << (*p_stu).height << endl;

    //访问方式2
    p_stu->name = "kitty";
    p_stu->age = 20;
    p_stu->height = 180.0;
    cout << p_stu->name << "\t" << p_stu->age << "\t" << p_stu->height << endl;
    //如果标识符是一个指针类型的变量,那么应该使用箭头运算符

    delete p_stu;
    return 0;
}

你可能感兴趣的:(C++基础,c++)