C语言数组就靠这个了(一)

在C语言中数组是很常见的一个东西,那么它具有什么神奇的地方呢?我们一起来看看,在介绍之前我们先来讲讲数组的基本概念。
首先数组是一组有序的、类型相同的数据的集合,这些数据被称为数组的元素。注意只有类型相同的数据才可以放在一个数组里面,这里和结构体不相同;并且你要注意,它存放数据是有序的,也就是说每个数据都是有一个类似编号的东西。然后每个数组都有一个名字,我们称之为数组名。数组名代表数组的起始地址。这个要牢牢记住,在后面结合指针,以及数组作为形参传递时,都会用到。我们数组元素由索引或下标标识,索引或下标从0开始。也就是说我们可以通过数组元素的下标来调用这个数组元素。数组存储方式,如果是一维数组,那么就按照从数组的第一位开始向后储存。二维数组的存储方式是从第一行开始,直到第一行存储满了后,才会从第二行的第一个开始存储,依次类推。而数组在内存的大小,这个取决于数组的类型和数组的长度。一般的计算方法是:数组类型占的字节*数组的大小。数组长度只能是常量和常量表达式(且必须大于0)。
下面介绍一维数组和二维数组

一维数组

①定义一维数组 数据类型+数组名+[+数组大小+]
如:int num[20];
②初始化数组,我们一般都是会初始化数组,虽然不初始化数组,内存也会给它开辟空间,但是其取值是随机,这可能会影响我们后面的操作(可能会有BUG),所以我们一般都会初始化数组。如何初始化呢?下面来介绍几种。

int num[20]={0}; // 用0直接赋初始值,那么这个数组都是0
int num[20]={1, 2, 3, 4} // 部分赋值,那么除了有赋值的几个元素以外其他的都是0
int num[5]={1, 2, 3, 4,5}//全部赋值,所有的元素都是手动赋的值。
int num[]={1, 2, 3}  // 这个是合法的下面有介绍

数组元素之间是用逗号隔开的。
初始化我们也可以借助循环来实现。
③数组元素的调用。调用数组元素,我们都是通过下标索引的方法来实现的。

num[2] //这里调用了num这个数组的第三个元素,因为数组下标从0开始,所以是第三个。
num[2]=78  //这里是将num这个数组的第三个元素赋值为78.

④一维数组在定义的时候可以不需要数组的大小,系统会根据你初始化的大小来开辟内存空间
⑤数组在使用的时候要注意下标不能越界,这个错误编译器不会帮我们检查,自己在写的时候要特别注意。
⑥数组与数组之间的赋值不能直接赋值,也就是不能把一个数组的值直接赋值给另一个数组。也不能将数组作为一个整体赋值。
例如:

int num1[10]={0};  int num2[10]={0};  int a=0;
num1=num2;//这样赋值是错误的,数组名代表首地址,不能直接赋值
a=num1 // 这个也是错误的
num1[5]=num2[5];//这样子是允许的

二维数组

①定义一个二维数组。 数据类型+数组名+[+行大小]+[+列大小]
如:int num[3][4];
②初始化数组,嗯,与初始化一维数组类似,无非是多了一个维度,要注意的是:二维数组的存储方式是从第一行开始,直到第一行存储满了后,才会从第二行的第一个开始存储,依次类推。接下来我直接介绍几个例子。

int num[3][4]={0}; //用0直接赋初始值,那么这个数组都是0
int num[3][4]={{1, 2, 3, 4}, {1, 2, 3, 4}, {1, 2, 3, 4}}  //全部赋值,所有的元素都是手动赋的值。
int num[3][4]={{1, 2, 3, 4}, {1, 2, 3, 4}}  // 部分赋值,那么除了有赋值的几个元素以外其他的都是0
int num[3][4]={1, 2, 3, 4, 1, 2, 3, 4}  //这样子赋值是合法的,下面会有介绍。
int num[][3]={1, 2, 3, 4, 5,6}//这样子赋值是合法的,下面会有介绍。

③二维数组的调用。调用数组元素,我们都是通过下标索引的方法来实现的。

num[2][3] //这里调用了num这个数组的第三行第四个元素,因为数组下标从0开始,所以是第三行第四个。
num[2][3]=78  //这里是将num这个数组的第三行第四个元素赋值为78.

④二维数组在定义的时候可以不需要行数,在初始化的时候系统会自动给你分配下去。并且开辟内存空间
⑤数组在使用的时候要注意下标不能越界,这个错误编译器不会帮我们检查,自己在写的时候要特别注意。
⑥二维数组在定义的时候可以第二个维度不要加{},因为系统在存储完第一行后会自动跳到第二行去。
简单的数组就先介绍到这里,下一次我们介绍字符串的数组,因为字符串数组比较特殊,所以我们单独拿出来总结一下。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值