小古银的官方网站(完整教程):http://www.xiaoguyin.com/
C++入门教程视频:https://www.bilibili.com/video/av20868986/
目录
一维静态数组
静态数组就是使用栈内存的数组,一般简称数组。
基础示例
以下是数组的创建和简单使用:
#include <iostream> // std::cout std::endl
int main(void)
{
// 创建具有10个元素的数组并且全部初始化为0
int arr1[10] = {};
// 跟上面一样, 赋值符号可省略
int arr2[10]{};
// 创建具有10个元素的数组,前三个分别初始化为1, 2, 3, 剩余全部初始化为0
int arr3[10]{ 1, 2, 3 };
// 创建具有4个元素的数组, 编译器在编译的时候会确定数组中元素的数量
int arr4[]{ 4, 5, 6, 7 };
// 对数组的元素进行操作
arr4[2] = 1024; // arr4的现在元素是{ 4, 5, 1024, 7 }
// 数组名是内存地址而不是指针, 去掉下面注释将会报错
// arr1 = arr4;
// 数组名是数组的首地址, 使用指针保存数组首地址
auto *p = arr4; // int *p = arr4;
std::cout << p[2] << std::endl;
return 0;
}
输出结果:
1024
基础讲解
静态数组的创建就像上面代码一样,使用方法和动态数组一样。
唯一要注意的是:数组名是数组所占用的连续栈内存的首地址,它不是指针。
多维数组
基础示例
#include <iostream> // std::cout std::endl
int main(void)
{
// 创建具有2 * 3个元素的数组并且全部初始化为0
int arr1[2][3] = {};
// 跟上面一样, 赋值符号可省略
int arr2[2][3]{};
// 创建具有2 * 3个元素的数组并初始化给元素的值
// 它的值就是
// 1 2 3
// 4 5 6
int arr3[2][3]{ { 1, 2, 3 }, { 4, 5, 6 } };
// 创建具有2 * 3个元素的数组, 第一维可以省略, 编译器在编译的时候会确定第一维元素的数量
int arr4[][3]{ { 1, 2, 3 },{ 4, 5, 6 } };
// 对数组的元素进行操作, 改变第2行第3个元素的值
arr3[1][2] = 1024; // arr4的现在元素是{ { 1, 2, 3 },{ 4, 5, 1024 } }
// 多维数组实际上也是连续的栈内存
auto *p = reinterpret_cast<int *>(arr3);
for (std::size_t i = 0; i < 6; ++i) // arr3有2*3=6个元素
{
p[i] = 100 * i;
}
// 输出二维数组arr3的值
for (std::size_t i = 0; i < 2; ++i)
{
for (std::size_t j = 0; j < 3; ++j)
{
std::cout << arr3[i][j] << ' ';
}
std::cout << std::endl;
}
return 0;
}
输出结果:
0 100 200
300 400 500
基础讲解
二维数组的声明类似于:int arr1[2][3];
;而三维数组的声明类似于:int arr2[10][22][33];
;以此类推。