C语言 数组

文章详细介绍了数组的概念,包括一维数组和二维数组的创建、初始化、使用以及内存存储方式。提到了C99之前的常量数组大小限制和C99后的变长数组特性,强调了数组在内存中是连续存放的,这对使用指针访问数组至关重要。
摘要由CSDN通过智能技术生成

一.数组的概念

数组是一组相同类型元素的集合

  • 数组中存放的是一个或多个数据,数组元素的个数不能为0
  • 数组中存放的多个数据,类型是相同的
  • 数组分为一维数组和多维数组,多维数组比较常见的是二维数组

二.数组的创建和初始化

1.数组的创建

存放在数组的值被称为数组的元素,数组在创建的时候可以指定数组的大小和数组的元素类型

  • type指定的是数组中存放数据的类型,可以是:char,short,int,float等,也可以自己定义类型

  • arr_name 指的是数组名的名字,这个名字尽量取的有意义

  • []中的常量值是用来指定数组的大小的,这个数组的大小根据实际需求指定。在数组创建的时候,[]只能是常量。在这里插入图片描述

    • C99之前数组的大小只能是常量指定,不能使用变量。
    • C99之后为什么就能使用变量了呢?—变长数组
  • 用法类型在这里插入图片描述

2.数组的初始化

初始化的概念:给定初始值
数组的初始化一般都放在大括号中。例如在这里插入图片描述

如果数组初始化了,是可以省略掉数组大小的。数组的大小,是编译器根据初始化的内容确定的

3.数组的类型

数组是[[C语言 数据类型和变量#^4a49f6|自定义类型]],去掉数组名留下的就是数组的类型在这里插入图片描述


三.一维数组的使用

一维数组可以存放数据,存放数据的目的是对数据的操作,那我们如何使用一维数组呢?

1.数组下标

  • 概念:C语言规定数组是有下标的,下表是从0开始的,假设有n个元素,那么最后一个元素的下标是n-1下标就相当于数组元素的编号在这里插入图片描述

  • 数组就是通过下标来进行访问的。为此,C语言提供了下标引用操作符—[],具体操作:在这里插入图片描述

  • 数组不能分配常量为0的数组

2.数组的打印与输入

a.打印

在这里插入图片描述

b.输入

在这里插入图片描述

  • 由此可以见的,下标的范围是可以灵活控制的

四.一维数组在内存中的存储

依次打印地址在这里插入图片描述在这里插入图片描述

  • 从输出的结果我们分析,数组随着下标的增⻓,地址是由⼩到⼤变化的,并且我们发现每两个相邻的 元素之间相差4(因为⼀个整型是4个字节)。所以我们得出结论:数组在内存中是连续存放的。这就 为后期我们使⽤指针访问数组奠定了基础(在讲指针的时候我们在讲,这⾥暂且记住就⾏)。

五.sizeof计算数组元素个数

  • [[C语言 数据类型和变量#^d0a1f0|sizeof]]概念
  • 求数组元素个数的写法在这里插入图片描述

六.二维数组的创建

1.概念

数组的元素都是内置类型的,如果我们把一维数组作为数组的元素,这时候就是二维数组,二维数组作为数组元素的数组叫做三维数组,二维数组以上的数组叫做多维数组。在这里插入图片描述

2.二维数组的创建

  • 语法如下:在这里插入图片描述

    • 3表示3行,5表示5列
    • int 表⽰数组的每个元素是整型类型
    • arr是数组名,可以根据⾃⼰的需要指定名字data数组意思基本⼀致。

七.二维数组的初始化

  • 与一维数组的初始化基本相同,下面是二维数组的不完全初始化在这里插入图片描述

  • 完全初始化:在这里插入图片描述

  • 初始化的同时也可以指定行:在这里插入图片描述

  • 初始化时可以省略行,但不能省略列:在这里插入图片描述

    • 一行放不下的,会放到第二行

八.二维数组的使用

1.二维数组的下标

与一维数组相同,二维数组也可以通过下标锁定元素。C语⾔规定,⼆维数组的⾏是从0开始的,列也是从0开始的

a.打印

在这里插入图片描述

b.输入

在这里插入图片描述


九.二维数组在内存中的存储

打印地址如下
在这里插入图片描述

  • 分析得:以⼆维数组中的每个元素都是连续存放的在这里插入图片描述

    • 了解清楚⼆维数组在内存中的布局,有利于我们后期使⽤指针来访问数组的学习。

十.C99中的变长数组

  • **在C99 之前创建数组的方式,数组的大小是使用常量,常量表达式指定的

  • C99中,引入了变长数组的概念,允许数组的大小是变大的在这里插入图片描述

  • 数组的大小根据输入变量值的大小来确定它的大小

  • 变长数组是不能初始化的

  • 变长数组的边长仅仅是指数组的大小可以用变量指定,并不是数组的大小可以变化的。只是说,我们每一次运行起来开一根据我们的需要给n输入值。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值