但事实上在C++中一提到new,至少可能代表以下三种含义:new operator、operator new、placement new。
new operator就是我们平时所使用的new
计算机3种基本属性
- 信息存储在何处
- 存储的值为多少
- 存储的信息是什么类型
只能使用delete来删除使用new分配的内存
对空指针使用delete是安全的
在编译时给数组分配内存被称为静态联编,在程序运行时选择数组的长度称为动态联编
int *psome = new int [10]
分配的时候,使用了方括号,delete的时候也需要配对使用方括号
使用new需要注意的事项
为数组分配内存的通用格式如下
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