一、一维数组
- 静态 int array[100]; //定义了数组array,并未对数组进行初始化
- 静态 int array[100] = {1,2}; //定义并初始化了数组array
- 动态 int* array = new int[100]; delete []array; //分配了长度为100的数组array
- 动态 int* array = new int[100](1,2); delete []array; //为长度为100的数组array初始化前两个元素
- 静态 int array[10][10]; //定义了数组,并未初始化
- 静态 int array[10][10] = { {1,1} , {2,2} }; //数组初始化了array[0][0,1]及array[1][0,1]
- 动态 int (*array)[n] = new int[m][n]; delete []array;
- 动态 int** array = new int*[m]; for(i) array[i] = new int[n]; for(i) delete []array[i]; delete []array; //多次析构
- 动态 int* array = new int[m][n]; delete []array; //数组按行存储
- int* array = new int[m][3][4]; 只有第一维可以是变量,其他维数必须是常量,否则会报错
- delete []array; 必须进行内存释放,否则内存将泄漏
- 第一种方法
#include
#include
#include
#include
using namespace std;
int main()
{
int N=5, M=6;
vector > obj(N);
//定义二维动态数组大小5行
for(int i =0;
i< obj.size();
i++){ //动态二维数组为5行6列,值全为0
obj[i].resize(M);
//指定二维数组大小为obj[i][M]
}for(int i=0;
i< obj.size();
i++){ //输出二维动态数组
for(int j=0;
j < obj[i].size();
j++){
cout << obj[i][j] << " ";
}
cout << "\n";
}
return 0;
}
- 第二种方法
#include
#include
#include
#include
using namespace std;
int main()
{
int N=5, M=6;
vector > obj(N, vector(M));
//定义二维动态数组5行6列
for(int i=0;
i< obj.size();
i++){ //输出二维动态数组
for(int j=0;
j < obj[i].size();
j++){
cout << obj[i][j] << " ";
}
cout << "\n";
}
return 0;
}
五、动态数组初始化
1. 元素只能初始化为元素类型的默认值,而不能像数组变量一样,用初始化列表为数组元素提供各不相同的初值。
2. 对于内置数据类型元素的数组,必须使用()来显示指定程序执行初始化操作,否则程序不执行初始化操作:
int *pia1 = new int[10];
// 每个元素都没有初始化
int *pia2 = new int[10]();
// 每个元素初始化为0
3. 字符类型元素的数组,则无论是否使用(),都会自动调用其默认构造函数来初始化:
string *psa1 = new string[10];
// 每个元素调用默认构造函数初始化
string *psa2 = new string[10]();
// 每个元素调用默认构造函数初始化
【【C/C++】数组定义及初始化】
推荐阅读
- c/c++|有感 Visual Studio 2015 RTM 简介 - 八年后回归 Dot Net,终于迎来了 Mvc 时代,盼走了 Web 窗体时代...
- C/C++|C/C++ basis 02
- Qt实战|Qt+OpenCV联合开发(二十一)--图像翻转与旋转
- Qt实战|Qt+OpenCV联合开发(十四)--图像感兴趣区域(ROI)的提取
- Qt实战|Qt+OpenCV联合开发(十三)--通道分离与合并
- opencv|Qt+OpenCV联合开发(十六)--图像几何形状绘制
- Qt实战|Qt+OpenCV联合开发(十七)--随机数与随机颜色
- SNAT的MASQUERADE地址选择与端口选择
- IPTABLES的连接跟踪与NAT分析
- IPVS分析