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");
}
相关推荐
kakakahahahaha33 分钟前
【Windows】C盘低空间反复复发的排查与扩容边界
c语言·windows·电脑·笔记本电脑·内容运营·软件需求
宸津-代码粉碎机33 分钟前
AI攻防战升级!基于Spring AI构建Java应用自动免疫安全体系
java·大数据·开发语言·人工智能·python·安全·spring
LorryJovens2 小时前
【LAAP科研】CEN因果等价网络理论---从双缝干涉到因果等价
开发语言·php
LuminousCPP2 小时前
数据结构-二叉树(六):BFS层序遍历与完全二叉树判断|复用链式队列 + (N_0=N_2+1) 性质证明
c语言·数据结构·笔记·算法·二叉树·宽度优先
Brilliantwxx3 小时前
【Linux】 进程(10) 进程控制深度解析:创建、终止与等待
linux·运维·服务器·c语言·开发语言·网络
wuyk5553 小时前
从零吃透Modbus通信|第7章:终极工程整合(模块化架构、双模式主机从机、RTOS适配、量产级模板)
c语言·stm32·学习·架构
卢锡荣4 小时前
国产PD3.1全集成Type-C管控芯片LDR6020P
c语言·开发语言
Freak嵌入式4 小时前
Pico UART 数据收发实战:硬件配置、MicroPython 编程
java·开发语言·单片机·嵌入式硬件·生活
Casual4 小时前
【网络基础进阶】:看懂子网划分与 VLAN
开发语言·网络·php