C++提供了种类丰富的内置数据类型和用户自定义数据类型,本文主要记录C++中的数据类型,包括七种基本数据类型,以及指针、数组、枚举、结构体等复合数据类型
1. 数组的初始化
C/C++中数组的初始化方法多,规则也比较混乱,使用时容易出现错误。对数组进行初始化的方法通常有三种:初始化列表、memset()函数、for循环。
1.1 静态数组的初始化
1 2 3 4 5 6 7 8 9 10 11
| int arr_A[] = {1,2,3}; int arr_B[cnt]; memset(arr_B,1,cnt*size0f(int)); int arr_C[rows*cols]; for(int i = 0; i < rows; i++) { for(int j = 0; j < cols; j++) { arr_C[i * cols + j] = 0; } }
|
NOTE:
- 初始化列表中元素的个数小于数组长度时,不足的元素补以默认值
- 数组创建后不进行初始化,数组中的元素(全局数组和静态数组默认初始化为0)为随机值
- 对于数组不能进行赋值操作,只能对数组元素进行赋值。如果要将一个数组赋给另一个数组,可以采用循环赋值或者借助
memcpy()
函数
1.2 动态数组的初始化
动态数组的初始化遵循静态数组初始化的规则,除此之外,动态数组的初始化还有一种新的语法。
1 2 3 4 5 6
| int* pArr1 = new int[cnt]{0}; std::string* pArr2 = new std::string[cnt]{"str"}; int* pArr3 = new int[cnt]; memset(pArr3,1,sizeof(pArr3));
int* pArr4 = new int[cnt]();
|
1.3 二维数组的定义和初始化
静态二维数组
1 2
| int Arr_A[2][3] = { {1,2,3},{4,5,6} }; int arr[rows][cols];
|
动态二维数组
1 2 3 4 5 6 7 8 9 10 11 12
| int** arr = new int*[rows]; for(int i = 0; i < rows; i++) { arr[i] = new int[cols]; } for(int i = 0; i < rows; i++) { delete[] arr[i]; } delete[] arr;
|
利用std::vector创建二维数组
1 2 3 4 5 6 7 8
| vector<vector<int>> arr(rows,vector<int>(cols)); for(int i = 0; i < rows; i++) { for(int j = 0; j < cols; j++) { arr[i][j] = 0; } }
|
参考文献 & 资源链接