首页 > 其他分享 >学习记录:day05笔记

学习记录:day05笔记

时间:2023-03-21 20:46:39浏览次数:32  
标签:初始化 arr 下标 定义 记录 笔记 数组名 day05 数组

一、数组

什么是数组:变量的组合,是一种批量定义相同类型变量的方式

定义: 类型名 数组名[数量];

int arr[5];

注意:数组的内存空间是连续分配的,且数组的长度一旦确定就无法改变

使用:数组名[下标];

下标:从0开始,范围:0~数量-1

可以是任意整型表达式,包括整型变量和整型常量

遍历:把数组的数据从头到尾显示或访问

一般与for循环配合,把循环变量i当作数组下标

初始化:

类型名 数组名[数量]={1,2,3,4,...};

变体:

1、初始化数据过多,编译器会警告并丢弃多余部分

2、初始化数据不足,编译器会对剩下元素执行值初始化(赋0)

初始化数据可以全部省略,只写大括号{},相当于全部成员初始化为0

类似地{0},{0,0}...都可达到类似效果

3、如果有初始化数据,则可以省略数组数量,因为编译器会自动统计数据个数,从而确定数组的数量

计算数组的总字节数:sizeof(arr);

计算数组成员的字节数:sizeof(arr[0]);

计算数组的长度:sizeod(arr)/sizeif(arr[0]);

数组与变量一样,默认值随机,所以一般要先初始化

数组不能整体初始化,只能逐个初始化,下面的写法是错误的:

int arr[20]=0

这种初始化语法只能在初始化时使用

 

练习1、定义一个长度为10的数组并初始化,计算最大值、最小值、平均值

练习2、定义一个长度为10的数组并初始化,降序排列

 

 

二、数组越界问题

出于程序运行效率考虑,C语言不检查数组下标是都越界

数据越界的后果:

1、一切正常

2、段错误(核心已转储)

3、脏数据

练习3:定义一个长度为10的数组并初始化,找出数组中第二大的值,不能排序

 

 

三、二维数组

一位数组相当于把变量排成一排,通过编号来访问

二维数组相当于把变量排成一个矩阵,通过行号和列号访问

二维数组在内存中依然是连续存储的

定义:

类型名 数组名[行数] [列号]

int arr[4] [5]

[0,0] [0,1] [0,2] [0,3]

[1,0] [1,1] [1,2] [1,3]

使用:数组名[行下标] [列下标];

行下标:0~行数-1

列下表:0~列数-1

遍历:一般需要与双层for循环配合,外层循环遍历行,内存循环遍历列

 int arr[4][5];
 for(int i=0;i<4;i++)
 {
     for(int j=0;j<5;j++)
    {
         
    }
 }

初始化:

数组名[行数] [列号]={{第一行},{第二行},{第三行},...}

变体:

1、大括号内数据可以全部省略,编译器自动执行值初始化(赋0)

2、在大括号数据和列数没有省略情况下,行数可以省略,编译器会自动计算行数

3、不能省略二维数组的列数

4、当列表内元素不够初始化所有数组元素时,被部分初始化的行剩下的元素会被编译器执行值初始化,其余执行默认初始化

 

练习4:定义一个5*5的二维数组并初始化,找出最大值的坐标

练习5:定义一个5*5的二维数组并初始化,计算出最大值的周围一圈的和

 

四、变长数组

定义数组时,使用变量作为数组的长度,这种数组称为变长数组

特点:在代码编译期间数组的长度时不确定的,只有执行到数组的定义语句时,长度才最终确定下来,并且一旦确定也无法改变。

优点:可以根据实际情况来确定数组的长度,从而节约内存

缺点:初始化发生在编译期间,而可变数组长度的确定发生在运行期间,因此可变长数组无法初始化

 

练习6:输入两个正整数m,n(1<=m/n<=6),然后输入数组arr[m] [n]的各个元素的数据,然后计算各个元素之和,统计非零元素的个数、计算平均值、统计大于平均值的元素个数

 

作业1:显示三层杨辉三角

作业2:定义一个长度为N的数组并随意赋值,找出数组中未出现的最小正整数

标签:初始化,arr,下标,定义,记录,笔记,数组名,day05,数组
From: https://www.cnblogs.com/-xdj/p/17241349.html

相关文章

  • 构建之法阅读笔记1
    一、我过去是怎么做的  过去,刚开始学C时,我还不知道这些编程语言能干什么用,而且老师也只是只讲课本知识,动手实践很少,导致现在回想大一时并没有什么收获可以回味。加上......
  • 学习记录:day06笔记
    一、Window下获取方向键1、导入头文件#include<conio.h>2、通过getch()获取键盘上的键值上:72下:80左:75右:77 二、Linux下获取方向键:1、在Window中把getch.h文......
  • 学习记录:day07笔记
    进制转换1、为什么使用二进制、八进制、十六进制?因为目前CPU只能识别高低两种电平,只能对二进制数据进行计算二进制虽然能够直接别计算机识别但是不方便人去书写和记......
  • [嵌入式RTOS]记录一下因浮点数转为字符串导致精度损失所踩的坑
    1.起因:工作中对接平台需要将设备的GPS数据传给平台,但是平台采用的不是回调函数将数据直接作为参数返回而是格式化的字符串命令,所以需要将double类型的gps数据格式化输出到......
  • 记录:MDPI参考文献调整(Zotero)
    一参考文献格式字体大小常用格式三种:期刊,图书章节,会议,网址引用二选择zotero格式1.Stylerequest:MDPI(generalstyle)-ZoteroForums 打开链接,下拉,选择最新的......
  • react 官网学习笔记
    1.元素(html片段)和组件的关系(js函数)2.写组件的方式(function还是class)3.一个括号和两个括号的使用场景{}(获取值/js函数调用){{}}4.props和render都是做什......
  • 【笔记】electron + react + antd
    electronElectron是一个使用JavaScript、HTML和CSS构建桌面应用程序的框架。嵌入Chromium和Node.js到二进制的Electron允许您保持一个JavaScript代码代码库......
  • 王树森Transformer学习笔记
    目录TransformerAttention结构Self-Attention结构Multi-headSelf-AttentionBERT:BidirectionalEncoderRepresentationsfromTransformersSummaryReferenceTransformer......
  • 树链剖分学习笔记(1)
    两大DFS树链剖分是一个比较简单易懂的算法,其两个基础操作为两次dfs,第一次dfs求出每个节点的父节点(\(f_{i}\)),深度(\(dep_{i}\)),子树大小(\(size_{i}\)),重儿子(\(son_{i}\))。其......
  • 记录--前端加载超大图片(100M以上)实现秒开解决方案
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助前言前端加载超大图片时,一般可以采取以下措施实现加速:图片压缩:将图片进行压缩可以大幅减小图片的大小,......