C语言-数组 07

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

特点: 是一段连续的内存空间

注意点: 数组长度省略: 大括号内元素的个数就是数组长度 数组长度未省略: 大括号内元素的个数 <= 数组长度 (未填充的部分填充默认值:整数0、小数0.0 、 字符'\0' 、字符串NULL)

数组的索引: 读取数组内的元素,写修改数组内的元素,都涉及到第几个的问题 --> 索引

数组元素的访问: 定义:一次获取数组中的一个元素

  • 读获取数组内的元素 数组名索引 -> 获取完赋值给一个变量或者直接输出打印或者参与运算

  • 写修改数组内的元素 数组名索引 直接赋值(arr3 = 5;)

数组退化: int arr\[\] = {1, 2, 3, 4, 5, 6};

  • 单写arr表示数组整体的特殊情况:sizeof(arr)

  • 与取地址运算符结合:&arr(地址是数组的首地址,步长是数组的总长度) 数组退化:arr(地址是数组的首地址,步长是指针所指向的数据类型)

获取单个数组元素:

复制代码
int a[] = {1, 2, 3, 4};
​
a[0];
*a;
​
a[1];
*(a + 1);

数组长度的计算:int len = sizeof(arr) / sizeof(arr0);

数组遍历的标准格式: 数组遍历的目的是:在循环中依次取出数组里面的元素

复制代码
for (int i = 索引起始; i < 数组长度 ; i++)
{
    //获取arr[i]进行操作; i依次表示数组的索引值
   // 获取*arr++进行操作;
​
}

结构体数组遍历:

复制代码
typedef struct
{
    char name[100];
    int age;
} student_t
​
​
student_t structArr[] = 
{
    {"zhangsan", 15},
    {"lisi", 17}
}
​
for(int i = 0; i < 2; i++)
{
    //structArr[i]: printf("学生名字为:%s, 学生年龄为:%d\n", structArr[i].name, structArr[i].age);
}

入参数组写法: 数组作为函数的参数进行传递时,实际传递的是数组的首地址

复制代码
//形式:
int arr[]
int *arrr

函数中遍历数组: 函数入参:数组首地址,数组长度

复制代码
void PrintArr(int arr[], int len)
{
    for(int i = 0; i < len; i++)
    {
        printf("%d\n", arr[i]);
    }
}
​
void PrintArr(int *arr, int len)
{
    for(int i = 0; i < len; i++)
    {
        printf("%d\n", *arr++);
    }
}

二维数组:

  • 定义:把很多个小数组,放到一个大数组当中

  • 定义格式

复制代码
数据类型 变量名 [m][n];
m:二维数组长度
n:一维数组长度
​
int arr1[] = {1, 2, 3, 4, 5};
int arr2[] = {a, b, c, d, e};
int *arr[] = {arr1, arr2};      //指针数组
  • 二维数组的遍历 依次获取二维数组里面的小数组
复制代码
int arr[3][5] = 
{
    {1, 2, 3, 4, 5},
    {11, 22, 33, 44, 55},
    {111, 222, 333, 444, 555}
};
​
for (int i = 0; i < 3; i++)
{
    for(int i = 0; i < 5; i++)
    {
        printf("%d ", arr[i][j]);
    }
    printf("\n");
}
相关推荐
晓蛋2 天前
c语言指的是什么意思
c语言·编译器·编程开发·集成开发环境·程序实例
小羊没烦恼!2 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
傲世仙尊2 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
牵猫散步的鱼儿2 天前
重载、重写(覆盖)、重定义区别
c语言
伞伞悦读2 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
phltxy2 天前
C 语言指针:从内存地址到灵活的数据访问
c语言
C语言小火车2 天前
C/C++ 为什么需要编译器?
开发语言·c++
phltxy2 天前
C 语言中的数据存储:从类型到二进制位
c语言
霍霍的袁2 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超2 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust