美文网首页
关于new的一些讲解

关于new的一些讲解

作者: sgy1993 | 来源:发表于2019-03-21 21:38 被阅读0次

    但事实上在C++中一提到new,至少可能代表以下三种含义:new operator、operator new、placement new。

    new operator就是我们平时所使用的new

    计算机3种基本属性

    1. 信息存储在何处
    2. 存储的值为多少
    3. 存储的信息是什么类型

    只能使用delete来删除使用new分配的内存
    对空指针使用delete是安全的

    在编译时给数组分配内存被称为静态联编,在程序运行时选择数组的长度称为动态联编

    int *psome = new int [10]
    

    分配的时候,使用了方括号,delete的时候也需要配对使用方括号

    使用new需要注意的事项


    image.png

    为数组分配内存的通用格式如下
    type name *pointer_name = new type_name [num_elements]

    分配结构体的方式

    struct sgy {
        int exam;
        int exam1;
    };
    sgy *p = new sgy;
    

    模板类vector,这个是动态数组的替代品
    怎么使用vector,一般的使用情况,他分配在堆上面

    vector<typename>   vt<n_elem>
    

    模板类array,这个是分配在栈上面的
    怎么使用array,一般怎么使用

    array<typename, n_elem> arr;
    

    对 double 类型的变量输入输出时,建议都用 %lf 占位符。

    基于范围的for循环,这个是c++11才引入进来的特性
    怎么使用,实例说明

        double prices[5] = {1.0, 2.0, 3.0, 4.0, 5.0};
        for (double x : prices) {
            printf("x:%lf\n", x);
        }
    

    怎么进行编译,需要加上 -std=gnu++11的选项

    g++ -o test test.cpp   -std=gnu++11
    

    最后的运行结果

    x:1.000000
    x:2.000000
    x:3.000000
    x:4.000000
    x:5.000000
    

    还可以使用基于范围的for循环和初始化列表
    举例说明

        for (int x : {1,2,3,4,5}) {
            printf("%d ", x);
        }
        printf("\n");
    

    实际的输出结果

    1 2 3 4 5
    

    相关文章

      网友评论

          本文标题:关于new的一些讲解

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