——黑马程序员——一维数组的长度和越界问题
来源:互联网 发布:无人机航线规划软件 编辑:程序博客网 时间:2024/05/17 22:05
-----------android培训、java培训、java学习型技术博客、期待与您交流!-----------
一维数组的长度和越界问题
一、数组长度的计算
1、数组在内存中所占字节数取决于数据的类型和数据的个数
2、数组在内存中占用的总字节数:sizeof(数组名);
3、数组长度 = 数组占用的总字节数 / 数组元素占用的字节数
数组的总字节数测试代码:
#include <stdio.h>#include <stdlib.h>int main(){ //定义一个整型的数组 int a[5] = {0,1,2,3,4}; //打印整型数组的总字节数 printf(" a[5]的总字节数为:%d\n",sizeof(a)); //定义一个字符型的数组 char ch[5] = {'A','B','C','D','E'}; //计打印字符型数组的总字节数 printf("ch[5]的总字节数为:%d\n",sizeof(ch)); //定义一个float类型的数组 float f[5] = {3.14f,6.28f,4.13f,6.28f,8.26f}; printf(" f[5]的总字节数为:%d\n",sizeof(f)); //定义一个double类型的数组 double d[5] = {3.14,6.28,4.13,6.28,8.26}; printf(" d[5]的总字节数为:%d\n",sizeof(d)); system("pause");return 0;}
数组的总字节数测试结果:
数组的元素所占字节数测试代码:
#include <stdio.h>#include <stdlib.h>int main(){ //定义一个整型的数组 int a[5] = {0,1,2,3,4}; //计算数组的每个元素的字节数 printf(" a[5]中每个元素所占字节数为:%d\n",sizeof(int)); //定义一个字符型的数组 char ch[5] = {'A','B','C','D','E'}; <pre name="code" class="html" style="color: rgb(51, 51, 51); font-size: 14px; line-height: 26px;"> //计算数组的每个元素的字节数printf("ch[5]中每个元素所占字节数为:%d\n",sizeof(char)); //定义一个float类型的数组 float f[5] = {3.14f,6.28f,4.13f,6.28f,8.26f};
<pre name="code" class="html" style="color: rgb(51, 51, 51); font-size: 14px; line-height: 26px;"> //计算数组的每个元素的字节数printf(" f[5]中每个元素所占字节数为:%d\n",sizeof(float)); //定义一个double类型的数组 double d[5] = {3.14,6.28,4.13,6.28,8.26};
<pre name="code" class="html" style="color: rgb(51, 51, 51); font-size: 14px; line-height: 26px;"> //计算数组的每个元素的字节数printf(" d[5]中每个元素所占字节数为:%d\n",sizeof(double)); system("pause");return 0;}数组的元素所占字节数测试结果:
数组长度测试代码:
#include <stdio.h>#include <stdlib.h>int main(){//定义一个整型的数组 int a[5] = {0,1,2,3,4}; //打印整型数组的总字节数 printf(" a[5]总字节数为:%d\n",sizeof(a)); //计算数组中每个元素的字节数 printf(" a[5]中每个元素所占字节数为:%d\n",sizeof(int)); //a[5]数组的长度 printf("---->a[5]数组长度为:%d\n",sizeof(a)/sizeof(int)); printf("\n"); //定义一个字符型的数组 char ch[5] = {'A','B','C','D','E'}; //打印整型数组的总字节数 printf(" ch[5]总字节数为:%d\n",sizeof(ch)); //计算数组中每个元素的字节数 printf("ch[5]中每个元素所占字节数为:%d\n",sizeof(char)); //a[5]数组的长度 printf(" ---->ch[5]数组长度为:%d\n",sizeof(ch)/sizeof(char)); printf("\n"); //定义一个float类型的数组 float f[5] = {3.14f,6.28f,4.13f,6.28f,8.26f}; //打印整型数组的总字节数 printf(" f[5]总字节数为:%d\n",sizeof(f)); //打印整型数组中每个元素所占字节数 printf(" f[5]中每个元素所占字节数为:%d\n",sizeof(float)); //f[5]数组的长度 printf(" ---->f[5]数组长度为:%d\n",sizeof(f)/sizeof(float)); printf("\n"); //定义一个double类型的数组 double d[5] = {3.14,6.28,4.13,6.28,8.26}; //打印整型数组的总字节数 printf(" d[5]总字节数为:%d\n",sizeof(d)); //打印整型数组每个元素所占字节数 printf(" d[5]中每个元素所占字节数为:%d\n",sizeof(double)); //d[5]数组的长度 printf(" ---->d[5]数组长度为:%d\n",sizeof(d)/sizeof(double)); system("pause");return 0;}数组长度测试结果:
未指定数组长度时计算数组的长度:
测试代码:
#include <stdio.h>#include <stdlib.h>int main(){//定义一个整型的数组 int a[] = {0,1,2,3,4,5,6,7}; //打印整型数组的总字节数 printf(" a[]总字节数为:%d\n",sizeof(a)); //计算数组中每个元素的字节数 printf(" a[]中每个元素所占字节数为:%d\n",sizeof(int)); //a[5]数组的长度 printf("---->a[]数组长度为:%d\n",sizeof(a)/sizeof(int)); printf("\n"); //定义一个字符型的数组 char ch[] = {'A','B','C','D','E','F','G'}; //打印整型数组的总字节数 printf(" ch[]总字节数为:%d\n",sizeof(ch)); //计算数组中每个元素的字节数 printf("ch[]中每个元素所占字节数为:%d\n",sizeof(char)); //a[5]数组的长度 printf(" ---->ch[]数组长度为:%d\n",sizeof(ch)/sizeof(char)); printf("\n"); //定义一个float类型的数组 float f[] = {3.14f,6.28f,4.13f,6.28f,8.26f,0.8f}; //打印整型数组的总字节数 printf(" f[]总字节数为:%d\n",sizeof(f)); //打印整型数组中每个元素所占字节数 printf(" f[]中每个元素所占字节数为:%d\n",sizeof(float)); //f[5]数组的长度 printf(" ---->f[]数组长度为:%d\n",sizeof(f)/sizeof(float)); printf("\n"); //定义一个double类型的数组 double d[] = {3.14,6.28,4.13,6.28,8.26,8.8,9.7,1.23,7.9}; //打印整型数组的总字节数 printf(" d[]总字节数为:%d\n",sizeof(d)); //打印整型数组每个元素所占字节数 printf(" d[]中每个元素所占字节数为:%d\n",sizeof(double)); //d[5]数组的长度 printf(" ---->d[]数组长度为:%d\n",sizeof(d)/sizeof(double)); system("pause");return 0;}
测试结果:
测试代码:
#include <stdio.h>#include <stdlib.h>int main(){//定义一个整型的数组 int a[100] = {0,1,2,3,4,5,6,7}; //打印整型数组的总字节数 printf(" a[100]总字节数为:%d\n",sizeof(a)); //计算数组中每个元素的字节数 printf(" a[100]中每个元素所占字节数为:%d\n",sizeof(int)); //a[5]数组的长度 printf("---->a[100]数组长度为:%d\n",sizeof(a)/sizeof(int)); printf("\n"); //定义一个字符型的数组 char ch[50] = {'A','B','C','D','E','F','G'}; //打印整型数组的总字节数 printf(" ch[50]总字节数为:%d\n",sizeof(ch)); //计算数组中每个元素的字节数 printf("ch[50]中每个元素所占字节数为:%d\n",sizeof(char)); //a[5]数组的长度 printf(" ---->ch[]数组长度为:%d\n",sizeof(ch)/sizeof(char)); printf("\n"); //定义一个float类型的数组 float f[30] = {3.14f,6.28f,4.13f,6.28f,8.26f,0.8f}; //打印整型数组的总字节数 printf(" f[30]总字节数为:%d\n",sizeof(f)); //打印整型数组中每个元素所占字节数 printf(" f[30]中每个元素所占字节数为:%d\n",sizeof(float)); //f[5]数组的长度 printf(" ---->f[30]数组长度为:%d\n",sizeof(f)/sizeof(float)); printf("\n"); //定义一个double类型的数组 double d[70] = {3.14,6.28,4.13,6.28,8.26,8.8,9.7,1.23,7.9}; //打印整型数组的总字节数 printf(" d[70]总字节数为:%d\n",sizeof(d)); //打印整型数组每个元素所占字节数 printf(" d[70]中每个元素所占字节数为:%d\n",sizeof(double)); //d[5]数组的长度 printf(" ---->d[70]数组长度为:%d\n",sizeof(d)/sizeof(double)); system("pause");return 0;}测试结果:
二、一维数组的越界问题
数组越界:当给数组初始化赋值或者访问数组元素时超出了数组的长度,访问了不能访问的地址叫越界
测试代码:
#include <stdio.h>#include <stdlib.h>int main(){printf(" int类型数组\n"); //定义变量 int i;//定义一个整型的数组 int a[5] = {0,1,2,3,4,5}; //遍历数组 for(i = 0; i < 7; i++) { printf(" 元素:%d ",a[i]); //数组中每个元素的地址 printf(" 地址:%p\n",&a[i]); } printf("float类型数组\n"); //定义变量 int k; //定义一个float类型的数组 float f[5] = {3.14f,6.28f,4.13f,6.28f,8.26f,0.8f}; //遍历数组 for(k = 0; k < 7; k++) { printf(" 元素:%f",f[k]); //数组中每个元素的地址 printf(" 地址:%p\n",&f[k]); } printf("字符类型数组\n"); //定义变量 int n; //定义一个float类型的数组 char ch[3] = {'A','B','C','D'}; //数组元素 printf(" 元素:%c",ch[0]); //数组地址 printf(" 地址:%p\n",&ch[0]); //数组元素 printf(" 元素:%c",ch[1]); //数组地址 printf(" 地址:%p\n",&ch[1]); //数组元素 printf(" 元素:%c",ch[22]); //数组地址 printf(" 地址:%p\n",&ch[2]); //数组元素 printf(" 元素:%c",ch[3]); //数组地址 printf(" 地址:%p\n",&ch[3]); printf("double类型数组\n"); int m; //定义一个double类型的数组 double d[6] = {3.14,6.28,4.13,6.28,8.26,8.8,9.7,1.23,7.9}; //遍历数组 for(m = 0; m < 10; m++) { printf(" 元素:%f",d[m]); //数组中每个元素的地址 printf(" 地址:%p\n",&d[m]); } printf("\n"); system("pause");return 0;}测试结果:
1 0
- ——黑马程序员——一维数组的长度和越界问题
- 黑马程序员——一维数组
- 黑马程序员——学习一维数组的地址
- 一维数组的越界问题
- 数组越界问题——危险
- 黑马程序员———C语言 一维数组
- 黑马程序员——c语言基础:一维数组
- 黑马程序员——一维数组指针探究
- 黑马程序员—数组
- 黑马程序员—数组
- 黑马程序员——C语言------指针和一维数组、字符串、函数
- 黑马程序员——数组和字符串
- 黑马程序员—进制、数组和字符串
- 每日一题(43)—— 数组越界
- 黑马程序员——数组和集合的主要区别
- 黑马程序员——黑苹果的日记(1) — 一维数组
- 数组的基本用法(4)——数组地址越界
- 黑马程序员——数组的Class
- iClap分享:如何优雅的在 APP 中实现测试?
- 避免使用虚函数作为库的接口
- android---(WebView)
- 设备文件系统
- Android Http接地气网络请求(HttpURLConnection)
- ——黑马程序员——一维数组的长度和越界问题
- 使用 Spring Data JPA 简化 JPA 开发
- Linux文件及目录操作
- iOS库--.a与.framework
- 高并发与锁(二)
- iOS开发13-iOS动画的学习
- 【剑指offer】-二维数组中的查找
- c陷阱与缺陷——陷阱
- C语言实现万年历