C语言 数组内存溢出 - C语言零基础入门教程
目录
- 一.数组内存溢出简介
- 二.数组内存溢出实例
- 三.猜你喜欢
零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门
一.数组内存溢出简介
溢出:想象一个桶,桶的容积是有限的,你装满了水以后,如何还要往里面装,那么水就溢出到地面了。
C
语言中的溢出和这个原理一样,桶的容积就表示你定义的某一数据的内存大小,往里面写入数据就表示在装水。
案例一:一个计时器,最大计 100s
的时,你让他跑了 120
秒,它就溢出了;
案例二:两个 unsignedchar
,一个200
,一个也是200
,相加,结果也就溢出,因为 unsignedchar
最大就 255
;
二.数组内存溢出实例
/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 数组内存溢出
//@Time:2021/06/10 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/#include<stdlib.h>
#include<stdio.h>
void main()
{unsigned char a[3] = {0};a[0] = 200;a[1] = 200;a[2] = a[0] + a[1]; //unsigned char 取值范围:0~255 ,超出取值范围printf("a:%d b:%d c:%d\n", a[0], a[1], a[2]);system("pause");
}
/*
输出:
a:200 b:200 c:144
请按任意键继续. . .
*/
在C
语言中unsignedchar
无符号字符类型取值范围是0~255
,很明显a[2]=400
,超出取值范围,内存溢出!为什么a[2]=144
?
当如果 unsignedchar
变量超过 255
之 后,默认又继续重 0
开始计算,例如:[int](https://www.codersrc.com/archives/7409.html)
类型 和 unsignedchar
类型转换:
int类型 和 unsigned char类型转换int unsigned char254 254255 255256 0257 1258 2... ...399 143400 144// 400 - 255 = 144
在取值 0~255
的时候,int
和当如果 unsignedchar
一样,当超出 255
之后,当如果 unsignedchar
继续重 0
开始;
三.猜你喜欢
- 安装 Visual Studio
- 安装 Visual Studio 插件 Visual Assist
- Visual Studio 2008 卸载
- Visual Studio 2003/2015 卸载
- C 语言格式控制符/占位符
- C 语言逻辑运算符
- C 语言三目运算符
- C 语言逗号表达式
- C 语言 sizeof 和 strlen 函数区别
- C 语言 strcpy 和 strcpy_s 函数区别
- C 语言 memcpy 和 memcpy_s 区别
- C 语言 数组定义和使用
- C 语言 数组遍历
- C 语言 数组排序 – 冒泡法排序
- C 语言 数组排序 – 选择法排序
- C 语言 数组排序 – 插入法排序
- C 语言 数组排序 – 快速法排序
- C 语言 数组下标越界
- C 语言 数组内存溢出
未经允许不得转载:猿说编程 » C 语言 数组内存溢出
C语言 数组内存溢出 - C语言零基础入门教程相关推荐
- C语言 指针数组和数组指针区别 - C语言零基础入门教程
目录 一.简介 1.数组 2.指针 3.指针和数组区别 二.指针数组和数组指针区别 1.指针数组 2.数组指针 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> ...
- C语言 数组指针 - C语言零基础入门教程
目录 一.简介 1.数组 2.指针 3.指针和数组区别 二.数组指针 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.简介 1.数组 ...
- C语言 指针数组 - C语言零基础入门教程
目录 一.简介 1.数组 2.指针 3.指针和数组区别 二.指针数组 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.简介 1.数组 ...
- C语言 指针和数组区别 - C语言零基础入门教程
目录 一.前言 二.指针和数组区别 1.通过 sizeof 获取大小 a.计算数组大小 b.计算指针大小 2.指针和数组赋值方式不同 a.指针赋值 b.数组赋值 3.指针是指针变量,数组是指针常量 三 ...
- C语言 二维数组遍历 - C语言零基础入门教程
目录 一.计算一维数组长度 二.计算二维数组长度 1.二维数组行数 2.二维数组列数 3.二维数组的元素个数 = 二维数组行数 * 二维数组列数 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C ...
- C语言 二维数组行数和列数计算 - C语言零基础入门教程
目录 一.计算一维数组长度 二.计算二维数组长度 1.二维数组行数 2.二维数组列数 3.二维数组的元素个数 = 二维数组行数 * 二维数组列数 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C ...
- C语言 二维数组定义和使用 - C语言零基础入门教程
目录 一.二维数组简介 二.定义二维数组并初始化 1.定义二维数组 2.初始化二维数组 三.访问二维数组 四.修改二维数组 五.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 & ...
- C语言 数组长度计算 - C语言零基础入门教程
目录 一.计算数组长度 1.经典案例 2.计算数组长度 二.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.计算数组长度 1.经典案例 / ...
- C语言 使用指针遍历数组 - C语言零基础入门教程
目录 一.使用数组下标遍历数组 1.计算数组元素个数 2.通过下标遍历数组 二.使用数组首地址偏移遍历数组 三.使用指针遍历数组 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目 ...
最新文章
- html5语言基础教程,HTML5基础教程,从入门到精通,零基础学HTML5
- editplus注释快捷键
- python中读写excel_python读写Excel
- python 截取字符串6位_在Python中从字符串获取x个最低有效位
- IEnumerable
- 穿墙透视真的来了!MIT华人团队超强动作检测模型,小黑屋照样夜视
- 008_使用pyenv进行py开发环境管理
- request failed with status code 500翻译_英语歌词的文言文翻译:文艺清新还是矫揉造作?...
- 微软称 SolarWinds 黑客还在继续攻击 IT 企业
- python解析接口_010 python接口 bs4解析html
- [转载] python 1
- mac mysql docker_docker学习(5) 在mac中创建mysql docker容器
- 怎么在计算机中搜索可移动硬盘,为什么本地硬盘在计算机上显示为可移动硬盘...
- curl测试post请求
- 【Linux应用】SAN(存储区域网络)技术
- jQuery实现打地鼠游戏
- 知客CRM成功客户专访----厦门英斯捷
- DeepCross Network(DCN)
- 华南师范大学计算机学院学硕,华南师范大学计算机学院研究生导师简介肖菁
- 小红书笔记无法展示是什么原因?让我们来看看吧