10 数组(一)

目录

数组(一)

10.1 数组

10.1.1 定义数组并初始化

10.1.2 初始化数组

10.1.3 访问数组

10.1.4 修改数组

10.2 在for循环中使用数组

10.2.1 数组遍历原理

10.2.2 数组遍历实战


本节内容要点:

  • 数组简介

  • for 循环中使用数组

  • 如何创建并初始化数组

  • 编写处理数组的函数

  • 二维数组

10.1 数组

C 语言中,一组数据的集合称为数组(C Primer Plus中:数组[array是按照顺序存储的一系列类型相同的值)] Array ,比如:字符串 char ,实际上也算是数组,字符串由多个字符构成;

数组中的每一个数据叫做数组元素 Element,数组中的每个元素都有一个序号,这个序号从 0 开始,称为下标 Index,例如,a[0] 表示第0个元素,a[3] 表示第3个元素。数组是一个整体,它的内存是连续的:

  • 字符数组和字符串的内存示意图

10.1.1 定义数组并初始化

定义数组 要想把数据放入内存,必须先要分配内存空间。例如:放入 4 个整数,就得分配 4 个 int 类型的内存空间:

//整形数组
int a[4] = {1,2,3,4};   //数组长度为4,只能存放4个元素
//浮点数数组
float a[4] = {1.0,2.0,3.0,4.0};   //数组长度为4,只能存放4个元素
//浮点数数组
double a[4] = {1.0,2.0,3.0,4.0};   //数组长度为4,只能存放4个元素
//字符串
char a[4] = "1234";     //数组长度为4,只能存放4个元素
  • 注意

1.数组中每个元素的数据类型必须相同,例如:int a[4],每个元素都必须为 int ;
2.数组长度 length 最好是整数或者常量表达式;
3.访问数组元素时,下标的取值范围为 0≤ index < length;
4.数组是一个整体,它的内存是连续的,内存示意图:

10.1.2 初始化数组

1. 定义数组同时赋值

整形数组

int a[4] = {1,2,3,4};

浮点数数组

float a[4] = {1.0,2.0,3.0,4.0};

双精度浮点数数组

double a[4] = {1.0,2.0,3.0,4.0};

字符串

char a[5] = "1234";

2. 根据数组下标对数组元素赋值

a[4];
a[0]=20;
a[1]=345;
a[2]=700;
a[3]=22;

等价于:

a[4] = {20,345,700,22};

3. 只给部分元素赋初值

// 案例一
int a[10]={12, 19, 22 , 993, 344};

等价于:

int a[10]={12, 19, 22 , 993, 344, 0, 0, 0, 0, 0};

4. 将数组所有元素初始化为0

int a[10]={0};

等价于:

int a[10]={0, 0, 0 , 0, 0, 0, 0, 0, 0, 0};

注意:

int a[10]={1};

等价于:

int a[10]={1, 0, 0 , 0, 0, 0, 0, 0, 0, 0};

若要所有元素为1:

int a[10]={1, 1, 1 , 1, 1, 1, 1, 1, 1, 1};

5. 给全部元素赋值且不指定数组长度

int a[]={0,2,4,6,8};

等价于:

int a[5]={0,2,4,6,8};
10.1.3 访问数组

数组元素通过下标访问,例如:

#include <stdlib.h>
#include <stdio.h>

void main()
{
    int a[10] = { 12, 19, 22 , 993, 344 };
    printf("index:%d  value:%d\n", 0, a[0]);
    printf("index:%d  value:%d\n", 2, a[2]);
    printf("index:%d  value:%d\n", 4, a[4]);
    printf("index:%d  value:%d\n", 8, a[8]);
    system("pause");
}
10.1.4 修改数组

可通过下标修改数组元素,例如:

#include <stdio.h>

int main()
{
    int a[5]={12, 19, 22 , 993, 344};
    printf("index:%d  value:%d\n",0,a[0]);
    printf("index:%d  value:%d\n",1,a[1]);
    printf("index:%d  value:%d\n",2,a[2]);
    printf("index:%d  value:%d\n",3,a[3]);
    printf("index:%d  value:%d\n",4,a[4]);

    printf("-------------------------------------------\n");

    // 修改数组的值
    a[0] = 100;
    a[1] = 200;
    a[2] = 300;
    a[3] = 400;
    a[4] = 500;

    printf("index:%d  value:%d\n",0,a[0]);
    printf("index:%d  value:%d\n",1,a[1]);
    printf("index:%d  value:%d\n",2,a[2]);
    printf("index:%d  value:%d\n",3,a[3]);
    printf("index:%d  value:%d\n",4,a[4]);
}

10.2 在for循环中使用数组

#include <stdio.h>

int main() {
    int arr[] = {1, 2, 3, 4, 5}; // 定义一个整型数组
    int len = sizeof(arr) / sizeof(arr[0]); // 计算数组长度

    for (int i = 0; i < len; i++) {
        printf("数组元素[%d]的值为:%d
", i, arr[i]);
    }

    return 0;
}

补充其它两种语言的写法:

  • 使用Python`进行遍历数组

# 一维数组(列表)
arr = [1, 2, 3, 4, 5]
for item in arr:
    print(item)

# 也可以使用索引
for i in range(len(arr)):
    print(arr[i])

# 二维数组(列表)
arr2 = [[1, 2, 3], [4, 5, 6]]
for row in arr2:
    for elem in row:
        print(elem, end=' ')
    print()  # 换行
  • 使用Java进行遍历数组

// 一维数组
int[] arr = {1, 2, 3, 4, 5};
for (int i : arr) {
    // 使用增强型for循环遍历
    System.out.print(i + " ");
}

// 也可以使用传统索引方式
for (int i = 0; i < arr.length; i++) {
    System.out.print(arr[i] + " ");
}

// 二维数组
int[][] arr2 = {{1, 2, 3}, {4, 5, 6}};
for (int i = 0; i < arr2.length; i++) {
    for (int j = 0; j < arr2[i].length; j++) {
        System.out.print(arr2[i][j] + " ");
    }
    System.out.println(); // 换行
}


在C语言中,使用for循环遍历数组的方法如下:

  • 首先,确定数组的长度,即元素个数。

  • 使用for循环,从0开始遍历到数组长度减1。

  • 在循环体内,通过下标访问数组元素并进行相应的操作。

10.2.1 数组遍历原理

C / C++ 数组定义和初始化中详细的介绍了关于数组五种初始化方法,这些初始化方式其实在开发中还是蛮实用的;

对于数组元素的访问和修改是通过数组下标的方式来解决的,数组遍历的原理也是一样,通过 while 循环或者 for 循环直接遍历数组下标从而达到访问或者修改数组值的目的;

📕需要注意的是:

1.数组中每个元素的数据类型必须相同,例如:int a[4],每个元素都必须为 int;

2.数组长度 length 最好是整数或者常量表达式;

3.访问数组元素时,下标的取值范围为 0 ≤ index < length;

4.数组是一个整体,它的内存是连续的;

10.2.2 数组遍历实战

1.遍历数组查询数组中的元素

#include <stdio.h>

int main() {
    int arr[] = {1, 2, 3, 4, 5}; // 定义一个整型数组
    int target = 3; // 要查找的目标元素
    int count = sizeof(arr) / sizeof(arr[0]); // 计算数组长度

    for (int i = 0; i < count; i++) {
        if (arr[i] == target) {
            printf("找到目标元素:%d
", target);
            break;
        }
    }

    if (target != 3) {
        printf("未找到目标元素");
    }

    return 0;
}

2.遍历数组修改数组中的元素

  • 确定数组长度:需要知道数组的长度,即元素的个数。这可以通过sizeof(arr)/sizeof(arr[0])来计算得到,其中arr是数组名。

  • 选择合适的循环结构:可以使用for循环、while循环或do-while循环来遍历数组。

  • 编写循环体:在循环体内,通过数组下标访问每个元素,并进行相应的操作。例如,可以对数组元素进行加法、减法、乘法等运算,或者将数组元素替换为新的值。

  • 处理修改后的结果:如果需要输出修改后的数组,可以在循环结束后再次遍历数组并打印出每个元素的值。

#include <stdio.h>

int main() {
    int arr[] = {1, 2, 3, 4, 5}; // 定义一个整型数组
    int count = sizeof(arr) / sizeof(arr[0]); // 计算数组长度

    for (int i = 0; i < count; i++) {
        arr[i] = arr[i] * 2; // 将数组元素乘以2
    }

    // 输出修改后的数组
    for (int i = 0; i < count; i++) {
        printf("数组元素[%d]的值为:%d
", i, arr[i]);
    }

    return 0;
}

相关推荐

  1. 13数组

    2024-04-01 02:38:01       36 阅读
  2. 每日10:Pandas:重塑数据-联结

    2024-04-01 02:38:01       9 阅读
  3. LeetCode 每日题 2023/12/4-2023/12/10

    2024-04-01 02:38:01       37 阅读
  4. LeetCode 每日题 2023/12/11-2023/12/17

    2024-04-01 02:38:01       43 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-01 02:38:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-01 02:38:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-01 02:38:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-01 02:38:01       20 阅读

热门阅读

  1. 深度优先搜索(DFS)算法深入探索与实践

    2024-04-01 02:38:01       15 阅读
  2. [内部类与常见API]String类

    2024-04-01 02:38:01       15 阅读
  3. 如何让div中滚动条一直保持在最下方

    2024-04-01 02:38:01       17 阅读
  4. 烂笔头,记录一年遗忘

    2024-04-01 02:38:01       16 阅读
  5. 【python】《流畅的python》读书笔记之第1-2章

    2024-04-01 02:38:01       14 阅读
  6. Redis 过期删除策略和内存淘汰策略

    2024-04-01 02:38:01       17 阅读