日志13

数组 1. 数组的定义和声明 (1)定义:数组是一组相同类型元素的集合。 例如,int arr[5]; 定义了一个名为arr的整数数组,它可以存储5个整数。数组的大小在定义时必须是一个常量表达式。 (2)声明:可以先声明数组,再进行初始化。例如,int arr[];声明了一个数组,但由于没有指定大小,它是不完整的声明。在C++ 11及以上版本中,可以使用extern关键字在一个文件中声明数组,在另一个文件中定义它,如extern int arr[];(声明)和int arr[5];(定义)。 2. 数组的初始化 (1)完全初始化:在定义数组时可以同时初始化所有元素。例如,int arr[3] = {1, 2, 3};,这里数组arr的三个元素分别被初始化为1、2和3。 (2)部分初始化:如果初始化列表中的元素个数少于数组的大小,剩余元素会被自动初始化为该类型的默认值。例如,对于int arr[5] = {1, 2};,arr[0]和arr[1]分别为1和2,arr[2]、arr[3]和arr[4]被初始化为0。 (3)默认初始化:如果没有对数组进行初始化,对于内置类型(如int、char等),数组元素的值是未定义的;但对于类类型,会调用默认构造函数进行初始化。 3. 数组元素的访问 通过下标来访问数组元素,下标从0开始。 例如,对于数组int arr[5]; 可以使用arr[0]、arr[1]等访问数组元素。注意要确保下标不超出数组的范围,否则会导致数组越界访问,这是一种严重的错误,可能会导致程序崩溃或产生不可预测的结果。 4. 数组与指针的关系 在C++中,数组名在大多数情况下可以看作是一个指针常量,它指向数组的第一个元素。 例如,对于数组int arr[5]; arr等价于&arr[0]。可以使用指针来操作数组,如int* p = arr;,然后通过p++来移动指针,访问数组的不同元素,就像*(p + 1)等价于arr[1]。 5. 多维数组 (1)定义和初始化:多维数组可以看作是数组的数组。例如,int matrix[3][4];定义了一个二维数组,它可以看作是一个包含3个元素的数组,每个元素又是一个包含4个整数的数组。初始化方式有多种,如int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}};。 (2)元素访问:对于二维数组int matrix[3][4];,可以使用matrix[i][j]来访问第i行第j列的元素,其中i的范围是0到2,j的范围是0到3。也可以将二维数组看作是一维数组,通过指针来访问,不过这相对复杂一些。 6. 数组作为函数参数 数组作为函数参数时,会退化为指针。 例如,函数void printArray(int arr[], int size)中的arr实际上是一个指针,而不是真正的数组。所以在函数内部,无法通过arr获取数组的大小,需要额外传递一个表示大小的参数size。可以通过引用传递数组来保留数组的大小信息,如void printArray(int (&arr)[5]),这里arr是一个引用,绑定到一个大小为5的数组上。

全部评论

相关推荐

02-13 15:16
三江学院 运营
据说名字越长别人越关注你的昵称我觉得我要被关注了:完全看不出你到底干了什么 全是车轱辘话
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
牛客网
牛客企业服务