关于new的一些讲解

2019-03-21  本文已影响0人  sgy1993

但事实上在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
上一篇下一篇

猜你喜欢

热点阅读