C语言-数组
数组定义
同一类型的变量——元素(element)集中在一起,在内存上排列成一条直线,这就是数组。
元素的类型既可以是int类型,也可以是double类型。
数组的声明
数组的声明通过指定的元素类型,变量名,元素个数。另外[ ]中的元素个数必须是常量。
图示:
数组的特点
类型相同的元素组成的集合。
空间连续
取元素的个数
数组的总大小=元素的个数 * 每个元素的大小
数组名arr作为类型时候,数组的总大小 == sizeof(arr)
每个元素的大小 == sizeof(arr[0])
元素的个数 = sizeof(arr)/sizeof(arr[0]);
代码示例
#include <stdio.h>
int main() {
// 定义数组
int arr[5];
int n = sizeof(arr) / sizeof(arr[0]);//元素的个数
printf("元素个数:%d\n", n);
//数组的下标:0~4 arr[0] arr[1] ...arr[4]
printf("sizeof(arr) = %u\n",sizeof(arr));//20
printf("sizeof(arr[0]) = %u\n",sizeof(arr[0]));//4
// 2.遍历数组
for (int i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
数组初始化
初始化全部元素
#include <stdio.h>
int main() {
// 数组初始化
int a[5] = {1,2,3,4,5};
int b[5] = {1,2,3};
return 0;
}
初始化部分元素
int a[10] = {1, 2, 4, 5}
定义的时候不加元素个数
int a[] = {1,2,3,4,5,6}
注意:
- 数组一定要初始化。
- 最终数组的元素个数由初始化的数据个数决定。
元素访问
遍历数组
代码示例
#include <stdio.h>
int main() {
// 1.数组初始化
int arr[] = {10,20,30,40,50};
// 2.元素的个数
int n = sizeof(arr) / sizeof(arr[0]);
printf("n = %d\n",n);
// 遍历数组
for (int i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
一维数组案例
定义数组,获取键盘录入,求出数组的平均值 最大 最小 值
#include <stdio.h>
int main() {
// 定义数组
int arr[5] = {0};
// 元素的个数
int n = sizeof(arr) / sizeof(arr[0]);
//获取键盘输入
printf("请输入%d个整数\n", n);
for (int i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
//求平均值
int sum = 0;
for (int i = 0; i < n; i++)
{
//累加每个元素的值
sum += arr[i];
}
printf("arr数组的平均值:%d\n", sum/n);
//求最大值
int max = arr[0];
for (int i = 0; i < n; i++)
{
if (max < arr[i])
{
max = arr[i];
}
}
printf("max= %d\n", max);
//求最小值
int min = arr[0];
for (int i = 0; i < n; i++)
{
if (min > arr[i])
{
min = arr[i];
}
}
printf("min= %d\n", min);
return 0;
}
元素互换
一位数值数组 逆置 (前后元素交换位置)
图示
代码示例
#include <stdio.h>
int main() {
int arr[5] = { 0 };
int n = sizeof(arr) / sizeof(arr[0]);
//获取键盘输入
printf("请输入%d个int数据:\n", n);
for (int i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
//交换
for (int i = 0, j = n-1 ; i < j; i++, j--)
{
int tmp = 0;
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
//遍历
for (int i = 0; i < n; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}