C++ 数组 & 指针
注意⚠️:
- 数组名代表第一个元素的位置,是一个常量,对数组名取地址的结果是数组的类型。
- char(*) [2] 是一种数组类型,表示指向有两个元素的数组的数组指针。
- 往char类型存入字符串的话,在字符串末尾加上
\0
作为终止符方便下次取用。- 如果结构体有元素是char*/char[] 类型,则在保存值的同时,也要保存长度。
- 数组作为形参时会退化为指针,因此可以说C++中传递数组永远是传递数组首元素的指针以及长度,后面用
memset
首先来看一个int
型的一维数组:
1 | int a[10] = {1}; |
其次是char
型的一维数组:
1 | char b[10]; |
二维数组 - 可以看作多个一维数组
char a[b][c]
a[0]
是一个一维数组的数组名,类型也就是char*
a
也就是首元素一维数组的数组名,类型是char (*)[c]
关键:数组名 等价于 首元素的首地址(第一维的首元素是第二维的数组名,第二维的数组名又是第二维的首元素,最终就是最低维的首元素)
1 | char a[3][2]; |
1 | int a[3][2] = {1}; |
以上结果均为0x7ffeefbff420
。
三维数组
char a[b][c][d]
首元素是具有c
个元素的一维数组。
1 | char a[3][2][2]; |
sizeof
与算数运算
1 | char a[10]; |