C语言中的数组

一.数组的概念:

数组是一种容器,可以用来存储同种数据类型的多个值

二.数组的定义

1.格式:

数据类型 数组名[数组长度];

2.特点

①:数组中的空间是连续的

②:数组一旦定义,长度就不再可变

三.数组的初始化

1.初始化的概念:

定义数组的时候,第一次给数组赋值

2.数组初始化的格式:

数据类型 数组名[数组长度] = {数据值1, 数据值2, ..., 数据值n};
// n等同于数组长度,不能多但能少

如果设置的数据值的个数等同于数组的长度,那么在对应的位置上放上的就是对应的数据

但是如果设置的数据值的个数小于数组的长度,那么前n个位置上放上的就是对应的数据,后面的数据都是被设置的默认值(比如整形int的默认值为0,小数的默认值为0.0)

四.访问数组

在我们访问数组的元素之前,我们需要了解什么是“索引”

1.索引

(1).索引的概念:

索引就是数组的一个编号,也叫做角标,下标,编号

(2).索引的特点:

①:从0开始计算

②:连续加一

③:不间断(因为数组分配的空间就是不间断的)

2.获取数组中的元素

使用的格式为:

数组名[索引];

这时我们获取到的就是我们想要的索引的数据了

但是我们需要注意的是:索引是从0开始的,也就是说第一个元素的索引是0,如果有n个元素,那么最后一个元素的索引就是n-1

(1).获取数组中的元素

#include<stdio.h>

int main() {
	int nums[5] = {1, 2, 3, 4, 5};
	for (int i = 0; i < sizeof(nums) / 4; i++) {
		if (i % 2 == 0) 
			printf("%d\n", nums[i]);
	} 
} 

(2).修改数组中的元素

#include<stdio.h>

int main() {
	int nums[5] = {1, 2, 3, 4, 5};
	// 把数组中的最后一个元素从5修改为了10 
	nums[4] = 10;
} 

五.数组遍历

1.遍历的概念:

依次获取数组中的每一个元素

2.使用循环对数组进行遍历:

#include<stdio.h>

int main() {
	int nums[5] = {1, 2, 3, 4, 5};
	for (int i = 0; i < sizeof(nums) / 4; i++) {
		printf("%d\n", nums[i]);
	}
} 

六.内存中的数组,变量

1.内存的概念:

软件在运行时用来临时存储数据的一片空间

2.内存地址的概念:

操作系统为了更好的管理内存,因此把内存中的空间划分为一个又一个的字节(每个字节都有自己独立的编号,而这个编号就是内存的地址)

内存地址在书写的时候会被转成十六进制

3.内存地址的作用:

快速地管理内存空间

4.内存地址的规则:

①:在32位的操作系统中,内存地址以32位的二进制表示

②:在64位的操作系统中,内存地址以64位的二进制表示

注意:如何计算数组的长度?

公式:数组的总长度 / 数据类型占用的字节个数

因为在我们使用sizeof方法获取数组的总长度时,获取到的是以字节个数显示的数组总长度,所以还要除以该数据类型占用的字节个数才是我们想要的个数

七.数组的常见问题

1.数组作为函数的形参

注意点:

①:实际上传递的是数组的首地址,如果要在函数中对数组进行遍历的话,一定要把数组的长度一起传递过去

②:定义处:arr表示的就是完整的数组

③:函数中的arr只是一个变量,用来记录数组的首地址

#include<stdio.h>
void printArr(int arr[], int len);

int main() {
	int arr[] = {1, 2, 3, 4, 5};
	int len = sizeof(arr) / sizeof(arr[0]);
	printArr(arr, len);
}

void printArr(int arr[], int len) {
	for (int i = 0; i < len; i++) {
		printf("%d\n", arr[i]);
	}
}

2.数组的索引越界

在了解索引越界这个概念之前我们需要重新复习一下:

数组中的最小索引为0,最大索引为数组长度 - 1

索引越界就是我们输入的索引超出了0到数组长度 - 1这个范围,此时编译器就会报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值