数组初始化 *[]

*和[]的作用是不一样的。

*是指指针,[]中括号是指一个数值的list。

见下面例子

#include <iostream>
#include <stdio.h>

using namespace std;


int main() {
    int* a = new int[20];
    int b[] = new int[20]; // 错误 这个应该是一个固定的int数组,后边应该用list初始化,而不是用new
    int* c = {4, 5, 6}; // 错误 这个是一个int指针,后边应该是new的内存地址,而不是一个初始化list
    int d[] = {1, 2, 3, 4};

    char* e = new char[20];
    char f[] = new char[20]; // 错误
    char* g = {'1', '2', '3'}; // 错误
    char h[] = {'1', 'a', '2'};

    // 所以字符串数组应该像下面这种写法
    char* i[] = {"1231223", "dddd"};
    // 二维数组的话就是两个括号,此时第二个中括号需要给定里面内容的个数
    char* j[][2] = {{"key1", "value1"}, {"key2", "value2"}};
    // string的一维数组
    string k[] = {"hello", "aaa", "bbb"};
    // string的二维数组
    string l[][2] = {{"111", "222"}, {"222", "333"}};

    // 指针的数组就是
    char** m = new char*[10];

    // 总结就是
    // 类型指针 变量名 = new 类型[大小];
    // 类型 变量名[] = {list初始化 类型的东西};

    return 0;
}
文章目录