数组的概念
- 数组,从字面上看,就是一组数据的意思,没错,数组就是用来存储一组数据的
- 在C语言中,数组属于构造数据类型
- 数组的几个名词
- 数组:一组相同数据类型数据的有序的集合
- 数组元素: 构成数组的每一个数据。
- 数组的下标: 数组元素位置的索引(从0开始)
- 数组的应用场景
- 一个int类型的变量能保存一个人的年龄,如果想保存整个班的年龄呢?
- 第一种方法是定义很多个int类型的变量来存储
- 第二种方法是只需要定义一个int类型的数组来存储
#include <stdio.h>
int main(int argc, const char * argv[]) {
// 数组: 如果需要保存`一组``相同类型`的数据, 就可以定义一个数组来保存
// 只要定义好一个数组, 数组内部会给每一块小的存储空间一个编号, 这个编号我们称之为 索引, 索引从0开始
// 1.定义一个可以保存3个int类型的数组
int scores[3];
// 2.通过数组的下标往数组中存放数据
scores[0] = 998;
scores[1] = 123;
scores[2] = 567;
// 3.通过数组的下标从数组中取出存放的数据
printf("%i\n", scores[0]);
printf("%i\n", scores[1]);
printf("%i\n", scores[2]);
return 0;
}
一维数组
数组的创建
数组是一组相同类型元素的集合。
数组的创建方式:
type_t arr_name [const_n];
//type_t 是指数组的元素类型
//const_n 是一个常量表达式,用来指定数组的大小
数组创建的实例:
//代码1
int arr1[10];
//代码2
int count = 10;
int arr2[count];//数组时候可以正常创建? C99可以,其他不行
//代码3
char arr3[10];
float arr4[1];
double arr5[20];
注: 数组创建,在C99标准之前, [] 中要给一个常量才可以,不能使用变量。在C99标准支持了变长数组的概念。
数组的初始化
数组的初始化是指,在创建数组的同时给数组的内容一些合理初始值(初始化)。
int arr1[10] = {
1,2,3}; //未初始化的值补为0
int arr2[] = {
1,2,3,4}; //该数组长度为4,长度可以不写,但必须初始化,不然会报错
int arr3[5] = {
1,2,3,4,5}; //正常创建
char arr4[3] = {
'a',98, 'c'}; //长度为3,98会根据Ascall码找到对应的值。为'b'
char arr5[] = {
'a','b','c'}; //长度为3,但是用 %s 输出时是寻找 \0 作为结束。在abc后面还会有随机长度的乱码。
char arr6[] = "abcdef"; //长度为7,f后面会自动补一位 '\0' 作为结束
数组在创建的时候如果想不指定数组的确定的大小就得初始化。数组的元素个数根据初始化的内容来确定。
一维数组的使用
对于数组的使用我们之前介绍了一个操作符: [] ,下标引用操作符。它其实就数组访问的操作符。
#include <stdio.h>
int main()
{
int arr[10] = {
0};//数组的不完全初始化
//计算数组的元素个数
int sz = sizeof(arr)/sizeof(arr[0]);
//对数组内容赋值,数组是使用下标来访问的,下标从0开始。所以:
int i