c++学习之数组

概述

        数组是相同数据类型对象的集合。是一种复合类型,数组在定义时其大小就固定了,并且不能修改,不能向数组中添加或删除元素。

        数组在内存中是连续存储的,即使是多维数组也是在内存中连续存储的,在理解上数组是多维的。在很多情况下,数组名可以转化为数组首地址,即数组第一个元素的内存地址。

        由于引用不是对象,所以不存在引用的数组,指针是对象,可以存放在数组中。

定义

定义数组必须指定类型,不能用auto来推断类型。

int arr1[3] = {1,2,3};
int arr2[3] = {1};      //等价于 int arr2[3] = {1,0,0}
int arr3[] = {1,2,3};   //等价于 int arr2[3] = {1,2,3};

一般使用sizeof运算符来求数组的长度。

int arr[] = {1,2,3,4,5};
int arrLen = sizeof(arr) / sizeof(*arr);//sizeof 不会将arr转化为指针来处理

使用for循环来读取数组中的元素:

int arr[] = {1,2,3,4,5};
int arrLen = sizeof(arr) / sizeof(*arr);
for(int i = 0 ; i < arrLen;i++){
    arr[i] = 0;
}

注意:不能拷贝和赋值

int arr[] = {1,2,3};
int arr1[] = arr;     //错误的,不能使用一个数组,初始化另一个数组
arr1 = arr;           //错误的,不能把一个数组直接赋值给另一个数组

复杂数组的声明

        由于引用不是对象,所以没有引用的数组

int *arr1[2];            //正确,arr1是int *数组
int &arr2[2];            //错误,不存在引用的数组
int (*pArr)[2] = &arr;   //pArr是一个指向int[]的指针
int (&pRef)[2] = arr;    //pRef是一个引用int[]的引用

题外话:今天遇到一个奇怪的问题,数组下标越界在windows,苹果上都没有报错,只在安卓上闪退,导致我们主城检查了半个小时,惭愧惭愧。千万不要下标越界,切记切记。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值