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");
}
相关推荐
1024奇点3 小时前
【仓颉语言入门 · 第二篇 第 22 课】
开发语言·ide·开源
Warren2Lynch4 小时前
C4 模型详解:利用 Visual Paradigm 可视化软件架构的综合指南
开发语言·uml
Knight_AL5 小时前
Java 文件下载时文件名中的 `#` 被转换成 `%23`?一次 URL 编码与解码问题排查
java·开发语言
FRing035 小时前
vue2干货总结2(v-bind、v-for、v-model、指令修饰符、v-bind操作class和style)
开发语言·前端·vue.js·vue2
蹊黎5 小时前
Linux 下用 C 语言实现进度条
linux·c语言·单片机
by209996 小时前
C++ 智能指针的所有权与使用
开发语言·c++·经验分享
砚底藏山河6 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
IT召唤狮6 小时前
开源企业级零信任项目Pangolin,零信任能挡住PHP核弹漏洞吗?
开发语言·开源·php
知已难寻6 小时前
03 · OpenStack的计算管理 Nova
运维·服务器·开发语言·云原生·云计算·openstack·开源软件
Rover Ramble6 小时前
C++ 用互斥锁实现读写锁
开发语言·c++