一维数组
一、一维数组的概念
一维数组是C语言中的一种数据结构,用于存储一系列相同类型的元素。它是由连续的内存位置组成的,每一个元素都对应一个唯一的索引值,通过索引可以访问和操作数组中的元素。
一维数组可以存储各种类型的元素,例如整型、浮点型、字符等。在声明一维数组时,需要指定元素的类型和数组的大小。数组的大小决定了该数组可以容纳多少个元素。
一维数组的索引从0开始,依次递增。通过使用索引,可以访问数组中特定的元素。例如对于一个包含十个元素的整型数组,该数组中的第一个元素索引为0,最后一个元素索引为9。
使用一维数组可以方便地存储和处理大量数据。它可以用于各种编程任务,如存储学生成绩、实现排序算法等。再通过循环结构遍历整个数组,并对其中的元素进行操作,进而实现更多更复杂的功能。
在使用一维数组时,我们要注意避免越界访问,即要避免访问数组以外的元素。越界访问可能导致程序崩溃或其它不可预测的结果。所以,在编写代码时务必确保数组的索引值在合法范围内。
二、一维数组的声明和初始化
2.1 声明
首先需要指定数组的数据类型和数组的名称,然后用方括号[ ]指定数组的大小。
举例:
int arr[5]//声明了一个数据类型为整型、数组名称为arr、数组长度为5的数组
2.2 初始化
2.2.1.在声明时进行初始化:在声明数组时,指定了数组的大小后,使用花括号将初始值包围起来。
举例:
1.完全初始化
int arr[5]={1,2,3,4,5};
//数组中的五个元素分别为“1,2,3,4,5”
2.部分初始化
int arr[5]={1};
//数组中的第一个元素为1,其它默认为0
//如果数组类型为char,则其余元素为\0
3.错误的初始化
int arr[5]={1,2,3,4,5,6,};
//定义数组长度为5,但赋给的元素有6个,超出数组的大小
2.2.2.声明后初始化:使用赋值语句对数组元素逐个赋值。
举例:
float arr[3];
arr[0]=1.1;
arr[1]=2.2;
arr[2]=3.3
2.2.3.动态初始化:如果数组的大小是在运行时确定的,可以使用动态内存分配函数来动态地初始化数组。
举例:
int n;
printf("请输入数组大小:");
scanf("%d", &n);
int *myArray = (int*)malloc(n * sizeof(int));
// 然后可以通过赋值或其他方法对数组元素进行初始化
三、一维数组的使用
3.1数组下标
数组的下标就相当于数组元素的编号,是从0开始的。假设有一个长度为n的数组,它的第一个元素的下标为0,最后一个元素的下表则为n-1
举例:
int arr[10]={1,2,3,4,5,6,7,8,9,10};
在C语言中为数组的访问提供了一个操作符 [ ],这个操作符叫做:下标引用操作符。有了它,我们可以准确地访问数组中的元素。
举例:
//对于上面的arr数组,我们要访问该数组的第6个元素
printf("%d",arr[5])
3.2 数组元素的输入输出
#include<stdio.h>
//一维数组的输入输出
int main()
{
int arr[10];
int i;
//输入,通过循环遍历,对数组的每一个元素进行赋值
for (i = 0; i < 10; i++)
{
scanf("%d", &arr[i]);
}
//输出,通过循环遍历,读取数组的每一个元素的值
for (i = 0; i < 10; i++)
{
printf("%d", arr[i]);
}
return 0;
}
3.3 一维数组在内存中的存储
#include<stdio.h>
int main()
{
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int i;
//输出,通过循环遍历,读取数组的每一个元素的地址
for (i = 0; i < 10; i++)
{
printf("%d\n", &arr[i]);
}
return 0;
}
结论:通过以上代码的结果我们可以看出,数组中的元素是连续存放的
3.4 sizeof计算数组个数
#include<stdio.h>
//计算数组的长度
int main()
{
int arr[10] = {0};
int sz = sizeof(arr) / sizeof(arr[0]);
//sizeof(arr)计算的是数组的大小
//sizeof(arr[0])计算的是数组首个元素的大小
printf("%d", sz);
return 0;
}
通过这种方法,往后编写代码时,如果有需要数组元素个数的地方,就无需写死,数组的元素个数随着计算结果的变化而变化 。