数组可以说是目前为止讲到的第一个真正意义上存储数据的结构。虽然前面学习的变量也能存储数据,
但变量所能存储的数据很有限。不仅如此,数组和指针(后续会讲)是相辅相成的,学习数组可以为学
习指针打下基础。
那么到底什么是数组呢?顾名思义数组就是很多数的集合!那么这些数有没有什么要求呢,是不是不管
什么数组合在一起都是数组呢?同一数组中存储的数必须满足以下两个条件:
1. 这些数的类型必须相同。
2. 这些数在内存中必须是连续存储的。
换句话说,数组是在内存中连续存储的具有相同类型的一组数据的集合.
数组的定义:数组是一种有序的元素序列,它由相同类型的变量组成,并通过数组名进行标识.
数组的类型:数值数组,字符数组,指针数组,结构数组等。
数组的初始化:
1>完全初始化:给数组的所有元素赋值。int arr[ 5 ] = {1,2,3,4,5};
2>不完全初始化:给数组的部分元素赋值。int arr[ 5 ] = {1,2,3};
数组的使用:
1、一维数组
#include <stdio.h>
int main(){
int arr[10] = {0};
int length = sizeof(arr) / sizeof(arr[0]);//计算数组长度
//对数组值进行访问,下标从0开始
//对数组内容进行输出
for(int i = 0;i<10;i++){
printf("%d\n",arr[i]);
}
return 0;
}
2、二维数组
#include <stdio.h>
int main(){
int arr[5][5] = { {1,3,5},{2,4,6} };
//获取行数
int rows = sizeof(arr) / sizeof(arr[0]);
//获取每一行中元素的个数
int cells = sizeof(arr[0]) / sizeof(arr[0][0]);
//输出二维数组
for(int i = 0;i<5;i++){
for(int j = 0;j<5;j++){
printf("%d",arr[i][j]);
}
}
return 0;
}
字符数组的输入:
scanf("%s",字符数组的首地址);
#include <stdio.h>
int main(){
int arr[256] = {0};
scanf("%s",arr);
printf("%s",arr);
return 0;
}
数组的存储:
特点:数组在内存中的存储都是连续的。
#include <stdio.h>
int main(){
int arr[10] = {0};
int length = sizeof(arr) / sizeof(arr[0]);
//下标
for(int i = 0;i<length;i++){
arr[i] = i;
}
//输出每个数组的每个元素的地址
for(i = 0;i<length;i++){
printf("%p\n",&arr[i]);
}
return 0;
}
0x7ffda8024fb0
0x7ffda8024fb4
0x7ffda8024fb8
0x7ffda8024fbc
0x7ffda8024fc0
0x7ffda8024fc4
0x7ffda8024fc8
0x7ffda8024fcc
0x7ffda8024fd0
0x7ffda8024fd4