【C/C++】数组定义及初始化

一、一维数组

  • 静态 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;  必须进行内存释放,否则内存将泄漏

四、通过STL容器 <vector> 声明数组

  • 第一种方法
#include <string.h>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
 
int main()
{
    int N=5, M=6; 
    vector<vector<int> > 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 <string.h>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
 
int main()
{
    int N=5, M=6; 
    vector<vector<int> > obj(N, vector<int>(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]();  // 每个元素调用默认构造函数初始化

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值