数组越界有什么后果_原来数组是容器喔

和我一起学C吧 0e22d9a094857d3b95421234e86e878e.png

努力是可以提升智力的 5.1.2    数组的使用: 如何定义和使用数组,数组的下标和下标的范围

前面有数组的简单介绍,可以去回顾一下其相关定义

27cb730a4a0e00cdf8f2d23bf7bf5d89.png    变量名称[元素数量];

 例:                       int grades[100];

                               double weight[20];

  注:元素数量必须是整数。

0c9dfd7ba1df6444654dbf87fa1cd4f8.png  数组的特点:
  • 其中所有的元素具有相同的数据类型;

  • 一旦创建,不能改变大小;

  • 数组中的元素在内存中是连续依次排列的。

0c9dfd7ba1df6444654dbf87fa1cd4f8.png 数组的单元

  • 数组的每个单元就是数组类型的一个变量
  • 使用数组时放在[ ]中的数字叫做下标或索引,下标从0开始计数:
Grades[0]; Drades[99] ;

0c9dfd7ba1df6444654dbf87fa1cd4f8.png   有效的下标范围

  •  编译器和运行环境都不会检查数组下标是否越界,无论是对数组单元做读还是写。

  • 一旦程序运行,越界的数组访问可能造成问题,导致程序崩溃。(segmentation  fault)

  • 也有可能不会造成严重后果(概率较小)。

  • 因此,程序的有效下标值:[0,数组的大小-1] 。

a1b0044db6b98dd90b025e6a59e6a129.png  I nt A[10];    A[7]=0;  表示在数组A中,将7这个位置赋值为0;      长度为0 的数组,可以存在,但是无用。

5.1.3    数组的例子:统计个数

例题:

写一个程序,输入数量不确定的[0,9]范围内的整数,统计每一种数字出现的次数,输入-1表示结束。(运行过程中,不定个数的输入范围内的数,即可统计每个数输入的个数)

以下为对应代码: 99c4ac66cf8b39fb794120fadae2f486.png

5.2.1    数组的运算

e393bc97bb8006ffc8023215d217fb89.png  在一组给定的数据中,如何找出某个数据是否存在? 1 、 数组的集成初始化:

Int a[ ]={2,4,6,7,1,3,5,9,11,13,23,14,32}

  • 直接用大括号给出数组的所有元素的初始值。

  • 不需要给出数组的大小,编译器替你数数。

补充 int a[13]={2}   // {2,4,6,7,1,3,5,9,11,13,23,14,32};

表示数组为13个数,只给第一个数赋值为2,那其他数都初始化为0。

以下为对应代码: d510573c3546dc63140e2a3681ed0c3d.png 2、集成初始化时的定位 Int a[10] = { [0]  = 2, [2] = 3,6,};
  • 用[n]在初始化数据中给出定位;
  • 没有定位的数据接在前面的位置后面;

  • 其他位置的值补0;

  • 也可以不给出数组大小,让编译器算;

  • 特别适合初始数据稀疏的数组。

以下为对应代码: 2e0cc5a1ae9c36ceee27c33ba9cf3776.png 3 、 数组 的大小
  • sizeof 给出整个数组所占据的内容的大小,单位是字节:

                sizeof(a)/sizeof(a[0])

  • sizeof(a[0])给出数组中单个元素的大小,于是相除就得到了数组的单位个数。

 优点: 这样的代码,一旦修改数组中初始的数据,不需要修改遍历的代码。

以下为对应代码:

056928d7ca5bb211f2e3430b805d5783.png 4、 数组的赋值
  • 数组变量本身不能被赋值。

  • 要把一个数组的所有元素交给另一个数组,必须采用遍历(即写一个循环):

for ( i = 0; i                                                   b[i] = a[i];                                             }
  • 通常都是使用for循环,让for循环变量i从0到

  • 常见错误是:

                          循环结束条件是<=数组长度,或;

                          离开循环后,继续用i的值来做数组元素的下标!

编程练习解析汇总(2) &  数组  其中打印九九表,for语句的代码贴错图了,以下为原代码:

ac092ccd9cee0e2d416f337151916f1c.png 0bc8d8eb4cda4f6ea7b525c5a0209412.pngEND 6b80e351a2e57a42fa043ca4c47a9acb.gif 441344fc5ea6b85387688e5d8a413fde.png

可爱的你一定会

扫一扫它吧❤

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值