首页 > 其他分享 >初学C语言day04--数组

初学C语言day04--数组

时间:2023-07-20 10:12:45浏览次数:33  
标签:初始化 arr 下标 -- C语言 int 数组名 数组 day04

一、数组

什么是数组:

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

类型名 数组名[数量];
int arr[5];
注意:数组的长度一旦确定,无法改变

使用:

数组名[下标];
下标:从0开始,范围:0~数量-1
    遍历:把数组的数据从头到尾显示或访问
一般与for循环配合,把循环变量i当做数组下标

初始化:

类型名 数组名[数量] = {1,2,3,4,...};
1、数组与变量一样,默认值随机,所以一般都要先初始化
        2、数组不能整体初始化,只能逐个初始化
                int arr[20]=0         false
         3、这种初始化的语法只能在定义数组时使用
         4、初始化数据过多,编译器会产生警告并丢弃
         5、初始化数据不足,编译器会自动补0
         6、初始化数据可以全部省略,只写大括号,相当于全部成员初始化为0
         7、如果有初始化数据,则可以省略数组数量,因为编译器会自动统计数据的个数,然后确定数组的数量
计算数组的总字节:sizeof(arr)
计算数组成员的字节数:sizeof(arr[0])
计算数组长度的公式:
sizeof(arr)/sizeof(arr[0])

二、数组越界问题

为了程序的运行效率考虑,C语言不检查数组下标是否越界
数据越界的后果:
1、一切正常
2、段错误(核心已转储)
3、脏数据

三、二维数组

一维数组相当于把变量排成一排,通过编号来访问
二维数组相当于把变量排成一个矩阵,通过行号和列号访问
二维数组在内存中依然是连续存储的
定义:
类型名 数组名[行数][列数];
int arr[4][5];
[0,0][0,1][0,2][0,3][0,4]
[1,0][1,1][1,2][1,3][1,4]
[2,0][2,1][2,2][2,3][2,4]
[3,0][3,1][3,2][3,3][3,4]
使用:数组名[行下标][列下标];
行下标:0~行数-1
行下标:0~列数-1
遍历:一般需要与双层for循环配合,外层循环负责遍历行,内层循环负责遍历列
int arr[4][5];
for(int i=0; i<4; i++)
{
for(int j=0; j<5; j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
初始化:
类型名 数组名[行数][列数]={{第一行},{第二行},...};
注意:
1、大括号内数据可以全部省略,那么就自动补0
2、大括号数据和列数不省略,行数可以省略,编译器会自动计算行数
3、不能省略二维数组的列数

四、变长数组

定义数组时,使用变量作为数组的长度,这种数组称为变长数组
特点:在代码编译期间数组的长度是不确定的,当执行到数组的定义语句时长度才最终确定下来,并且一旦确定长度也无法改变
int n = 0;
scanf("%d",&n);
int arr[n];
优点:可以根据实际情况来确定数组的长度,从而节约内存
缺点:初始化发生在编译期间,而可变长数组长度的确定发生在运行期间,因此可变长数组无法初始化

标签:初始化,arr,下标,--,C语言,int,数组名,数组,day04
From: https://www.cnblogs.com/bigflyny/p/17567549.html

相关文章

  • 人生中的一个小故事
    做人要吃一堑长一智。好多年前,我和女友一起到一家餐馆吃饭。当时点了一样肠粉。吃的过程中发现肠粉中有一根黑色长头发。女友马上就手拉出来,我想劝都来不及。本来我想先不要拉出来就找服务员过来,但是既然女友已经拉出来了,所以我也没说什么,也劝女友不要声张,不吃那肠粉就好了,吃......
  • SP10582 题解
    题目链接题意简述给定一个有\(n\)个数的数组,求从第一个数字开始,向后每\(k\)个数字的最大值。题目分析看到没有人用ST表做那我就来发一个吧。这道题可以用ST表做。它可以在经过\(O(N\logN)\)的预处理后,以\(O(1)\)的时间在线回答下标在\(l\)到\(r\)之间的数......
  • 项目启动时报:Method breakpoints may dramatically slow down debugging
    一、问题故障Methodbreakpointsmaydramaticallyslowdowndebugging.翻译:方法断点可能会大大降低调试速度。描述:说明当前项目中在某些方法和接口上打了断点导致执行延迟。二、错误打断点方式合理的打断点,那么标识号是圆圈的。错误的为菱形。三、解决方案总体来说就......
  • lvm+ssd缓存 附samba配置
    注:一般不用在未挂载前创建samba,视实际情况而定(客户现场掉盘后samba服务异常,直接导致服务器掉盘卡死,先临时起samba服务,但需要考虑系统盘大小与业务持续写入情况,避免samba服务器根分区爆满)parted-s/dev/nvme0n1mklabelgptmkpartCACHE0%100%parted-s/dev/mapper/mpathf......
  • 黑魂 建立被击打动画
    在swordandshield动画包里找到impact2,先选中PlayerHandle的ybot,然后点开Animator的BaseLayer。把impact2的动画拖进去,在AnyState拖出箭头指向impact动画,动画改名为hit,然后在Parameters里添加一个hit的Trigger。在箭头里添加动画条件hit。然后我在PlayerHandle里添加一个......
  • Taro 小程序自定义热门城市选择页
    先上一下大致效果由于业务需要一个单独全国城市筛选页面,然后就网上找了一波,发现没有特别合适的,于是就手动撸一个,需要当前页面具备以下功能:1.定位当前所在城市2.展示热门城市信息3.清空当前城市选择4.支持本地快捷搜索5.列表数据支持分页展示(主要是城市数据量太大,页面渲染......
  • python 打包apk
    Python打包APK在移动应用开发中,Android是最流行的操作系统之一。通常,我们使用Java或Kotlin编写Android应用程序,并使用AndroidStudio进行构建。不过,如果你是Python开发者,你可能会想知道是否可以使用Python来开发Android应用程序。答案是肯定的!有很多工具可以帮助我们使用Python构......
  • python 词云图用指定词分词
    Python词云图用指定词分词词云图是一种以词语频率为基础,通过图形化展示词语在文本中出现的频率的可视化工具。在Python中,我们可以使用wordcloud库来生成漂亮的词云图。本文将介绍如何使用Python中的wordcloud库生成词云图,并指定需要分词的词语。安装所需库在开始之前,我们需要先......
  • python 词性
    Python词性标注教程简介在自然语言处理中,词性标注(Part-of-SpeechTagging)是指给定一个句子,确定每个词在上下文中的词性。词性标注在很多自然语言处理任务中都是很重要的预处理步骤,比如命名实体识别、句法分析等。Python提供了一些库和工具可以方便地实现词性标注,本文将介绍如何......
  • 什么是组网?如何组网?
    什么是组网组网是指将不同的计算机、设备连接在一起,形成一个网络,在这个网络中实现数据的上传、下载等。组网的目的为了实现计算机之间的数据传输和资源共享。在一个组网的环境中,多个计算机可以通过网络连接互相通信,共享数据和资源。这样可以提高工作效率,减少重复劳动,节省时间和成......