C语言 数组下标越界 - C语言零基础入门教程

目录

  • 一.数组下标越界简介
    • 1、什么是数组访问越界?
    • 2、访问越界会出现什么结果?
  • 二.数组下标越界案例
  • 三.防止数组下标越界方法
  • 四.猜你喜欢

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门

一.数组下标越界简介

1、什么是数组访问越界?

C 语言中,我们可以直接通过数组下标来访问数组中的元素;

如果一个数组定义为有n个元素,那么,对这n个元素(下标为0n-1的元素)的访问都合法,如果对这n个元素之外的访问,就是非法的,称为**越界**,例如:

int a[5] = {0}; //等价 int a[5] = {0,0,0,0,0};
a[0] = 1;  // ok
a[1] = 2;  // ok
a[2] = 3;  // ok
a[3] = 4;  // ok
a[4] = 5;  // ok
a[5] = 6;  // 数组下标越界

在上面代码中,声明一个数组a[5],该数组中只能存放5个元素,下标索引值取值范围0~4,超过这个范围就属于下标越界;

2、访问越界会出现什么结果?

首先,它并不会 造成编译错误!就是说,C,C++ 的编译器并不判断和指出你的代码访问越界了。一个明明是错误的东西,就这样“顺利”地通过了编译;

数组访问越界在运行时,它的表现是不定的,有时似乎什么事也没有,程序一直运行(当然,某些错误结果已造成);有时,则是程序一下子崩溃。因此在使用数组时,一定要在编程中判断是否越界以保证程序的正确性。

二.数组下标越界案例

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 数组下标越界
//@Time:2021/06/10 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/#include <stdio.h>
int main()
{int i, a[10];for(i = 1; i <= 10; ++i)a[i] = 0;return 0;
}

数组中的下标从 0 开始,那么在上面代码中只能访问:a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9];i自加到10时,a[10]属于数组下标越界。

三.防止数组下标越界方法

如果数组的长度和下标访问值弄错,都会造成数组下标越界;数组的下标是从 0 开始的,最大的访问值是数组的长度-1;

//如果是整形数组
int len = sizeof(array)/sizeof(int);
//如果是字符数组
int len = sizeof(array)/sizeof(char);
//如果是浮点数数组
int len = sizeof(array)/sizeof(double);
//如果是浮点数数组
int len = sizeof(array)/sizeof(float);
for(int i = 0;i < len ; i++)
{//.....
}

四.猜你喜欢

  1. 安装 Visual Studio
  2. 安装 Visual Studio 插件 Visual Assist
  3. Visual Studio 2008 卸载
  4. Visual Studio 2003/2015 卸载
  5. C 语言格式控制符/占位符
  6. C 语言逻辑运算符
  7. C 语言三目运算符
  8. C 语言逗号表达式
  9. C 语言 sizeof 和 strlen 函数区别
  10. C 语言 strcpy 和 strcpy_s 函数区别
  11. C 语言 memcpy 和 memcpy_s 区别
  12. C 语言 数组定义和使用
  13. C 语言 数组遍历
  14. C 语言 数组排序 – 冒泡法排序
  15. C 语言 数组排序 – 选择法排序
  16. C 语言 数组排序 – 插入法排序
  17. C 语言 数组排序 – 快速法排序
  18. C 语言 数组下标越界

未经允许不得转载:猿说编程 » C 语言 数组下标越界

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/524993.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea快捷键之记录

1.ctrlaltv补齐下面左边的. new A&#xff08;&#xff09;; 2.altinsert是getter、setter、构造方法等快捷键 3.ctrlh在实体类按&#xff0c;显示继承关系

BugkuCTF-MISC题神奇宝贝

压缩包有两个文件&#xff0c;但是在解压的时候报错 用010editor打开&#xff0c;发现报错 同时发现文件尾部是504B,说明这是一个zip文件&#xff0c;把文件头修改为504B0304后可以解压出压缩包和一个图片 后来才知道&#xff0c;这是 《精灵宝可梦》 里的精灵未知图腾,拥有2…

云漫圈 | 寻找无序数组的第k大元素

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者&#xff1a;小灰来源&#xff1a;程序员小灰本期封面作者&#xff1a;泰勒太乐————— 第二天 —————题目是什么意思呢&#xff1f;比如给定的无序数组如下&#xff1a;如果 k6&#xff0c;也就是要寻找第6大的元素&a…

继承之详细讲解

代码结构 package com.wuming.oop2.demo05; //person 人 父类 public class Person {//继承:java只有单继承&#xff0c;没有多继承&#xff0c;extends修饰public int money10_0000_0000;private int money120;public int getMoney1() {return money1;}public void setM…

C语言 数组内存溢出 - C语言零基础入门教程

目录 一.数组内存溢出简介二.数组内存溢出实例三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.数组内存溢出简介 溢出&#xff1a;想象一个桶&#xff0c;桶的容积是有限的&#xff0c;你装满了水以后&#xff0c;如何还要往里面装&#xf…

BugkuCTF-MISC题乌云邀请码

下载文件&#xff0c;解压后得到一张图片 方法一&#xff1a; 通过zsteg直接得到flag 方法二&#xff1a; 放入Stegsolve查看 发现红绿蓝plane0 的最上边都有一排小黑点儿&#xff0c;很可疑 选择Analyse 的Data Extract进行分析 勾选红绿蓝的0层&#xff0c;选BGR模式&…

趣挨踢 | 关于遗留代码的那些事儿

戳蓝字“CSDN云计算”关注我们哦&#xff01;来自&#xff1a;程序员最幽默&#xff08;ID&#xff1a;humor1024&#xff09;【1】当我不小心打开了遗留代码&#xff0c;世界从我眼前消失了。【2】当我试图破译遗留代码的时候【3】当我尝试修复遗留代码&#xff0c;却永远找不…

全网最细之super讲解

1.super调用父类构造方法且必须出现在方法内第一行 2.super必须只能出现在子类的方法或者构造方法中 3.super和this不能同时存在 vs this: 代表的对象不同&#xff1a; this&#xff1a;本身 super&#xff1a;父类 前提&#xff1a; this:没有继续也可以使用 super&a…

C语言 数组下标越界和内存溢出区别 - C语言零基础入门教程

目录 一.数组下标越界和内存溢出简介二.数组下标越界和内存溢出区别三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.数组下标越界和内存溢出简介 **溢出本义是算术溢出(arithmetic overflow)&#xff0c;**指算术计算结果无法在一定范围内表…

重写详细讲解

重写&#xff1a;需要有继承关系&#xff0c;子类重写父类的方法&#xff01; 1.方法名必须相同 2.参数列表必须相同 3.修饰符&#xff1a;范围可以扩大但不能缩小&#xff1a;public>protected>default>private 4.抛出异常&#xff1a;范围可以被缩小&#xff0c…

云计算演进历程与模式 - 初识云计算知识专栏(2)

戳蓝字“CSDN云计算”关注我们哦&#xff01;云计算演进历程云计算产生背景云计算的产生是需求推动、技术进步、商业模式转变共同促进的结果。需求推动指的是政企客户低成本且高性能的信息化需求&#xff1b;人用户的互联网、移动互联网应用需求强烈&#xff0c;追求更好用户体…

BugkuCTF-MISC题细心的大象

下载文件file.zip 直接解压出错&#xff0c;通过binwalk -e file.zip分离出文件夹_file.zip.extracted 得到一张图片&#xff0c;通过binwalk -e 1.jpg分离出文件夹_1.jpg.extracted 得到.rar压缩包&#xff0c;打开需要密码&#xff0c;通过爆破找不到密码 查看1.jpg图片属性&…

C语言 数组长度计算 - C语言零基础入门教程

目录 一.计算数组长度 1.经典案例2.计算数组长度 二.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.计算数组长度 1.经典案例 /******************************************************************************************/ //Author:猿说…

BugkuCTF-MISC题想蹭网先解开密码

下载文件wifi.cap 先通过crunch命令先生成字典 crunch 11 11 -t 1391040%%%% -o password.txt 输入aircrack-ng wifi.cap 输入3&#xff0c;因为第三个存在握手包 输入aircrack-ng -e D-Link_DIR-600A -b BC:F6:85:9E:4E:A3 -w /root/文档/CTF题目/CTF02/MISC/想蹭网先解开密…

云要闻 | 华为助力5G;青云云资源价格全面下调;神州数码签订云计算服务合同

戳蓝字“CSDN云计算”关注我们哦&#xff01;Hello&#xff0c;everyone&#xff1a;1月7日&#xff0c;星期一CSDN云要闻时间&#xff1a;嗨&#xff0c;大家好&#xff0c;偶是“CSDN 云计算”微信公众号新晋成员一枚&#xff0c;人称“要闻君”。精神满满的周一&#xff0c;…

C语言 十进制和十六进制相互转换 - C语言零基础入门教程

目录 一.十进制和十六进制区别 1、基数不同2、有效字符不同3、用途不同 二.十进制转十六进制三.十六进制转十进制四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.十进制和十六进制区别 1、基数不同 十进制满10进1&#xff1b; 十六进制满F…

多态详细讲解

1.多态是方法的多态&#xff0c;属性没有多态 2.父类和子类有联系&#xff0c;类型转换异常&#xff01;classcastexception 3.存在条件&#xff0c;继承关系&#xff0c;方法需要重写&#xff0c;父类引用指向子类对象Father f1new Son&#xff08;&#xff09;&#xff1b;…

BugkuCTF-MISC题旋转跳跃

先下载解压&#xff0c;尝试播放 既然是mp3&#xff0c;那么先尝试拉入Audacity 没发现啥&#xff0c;仔细看了看题目注释&#xff0c;发现给了个KEY 打开mp3stego-gui的根目录 在终端输入wine Decode.exe -X -P syclovergeek sycgeek-mp3.mp3 (wine为在linux打开exe文件) 会…

有问有答 | 算法和数据结构精华问答

戳蓝字“CSDN云计算”关注我们哦&#xff01;所有的算法&#xff0c;乃至数学在实际运用中都是要根据不同的数据来选择不同的方法&#xff0c;所以一般学习过算法和数据结构的人都会越发的认识到&#xff0c;数据才是程序的中心&#xff0c;只有找到了一个组织数据的最佳方式&a…

全网最细之instanceof和类型转换

package com.wuming.oop4.demo08;public class Application {public static void main(String[] args) {//类型之间转换&#xff1a;父 子//高 低Person person1 new Student();//student将这个对象转换为student类型&#xff0c;我们就可以使用student…