首页 > 其他分享 >10 数组(一)

10 数组(一)

时间:2024-03-31 22:34:11浏览次数:12  
标签:10 arr index int 元素 数组 printf

目录

数组(一)

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 循环直接遍历数组下标从而达到访问或者修改数组值的目的;

标签:10,arr,index,int,元素,数组,printf
From: https://blog.csdn.net/m0_67671144/article/details/137185877

相关文章

  • 11 :数组(二)
    数组(二)本节内容要点:二维数组编写处理数组的函数10.3二维数组1.二维数组的定义和初始化二维数组可以看作是数组的数组,它在编程中常用于表示表格数据、矩阵等。在大多数编程语言中,二维数组可以通过指定两个维度的大小来定义和初始化。二维数组的定义:   定义类......
  • JavaScript基础篇3【数组】
    今日学习内容什么是数组简单理解就是用于临时存储同类数据,本质上是一种具有顺序的特殊对象【当然其实是可以存储不同的数据类型的,只是说那样做很少,所以一般就如前一样理解】数组的定义JavaScript中有两种定义数组的方式:实例化Array对象【称之为“完整形式”】vararr......
  • [题解]P2516 [HAOI2010] 最长公共子序列——求LCS个数
    P2516[HAOI2010]最长公共子序列总的来说,这道题确实很精妙,难度也不小,耗费了不少时间去调。本来想过用容斥的思想,却因为当时理解不深没有继续思考就放弃了。学会了思路后对\(LCS\)有了更深层次的理解。题意简述给定\(A,B\)两个字符串(以.结尾),求它们的最长公共子序列的长度和个数......
  • 上海大厂Android面试经历;华为+小米,阿里高级算法专家公开10份资料
    第三方库的源码,Glide、OkHttp和Retrofit问得比较多,MVC,MVP和MVVM开发模式优缺点。常用设计模式理解问得也多,大公司Binder驱动和虚拟机方面问得比较多。3.数据结构和算法,Java的常用集合和实现原理比如ArrayList,LinkedHashMap的实现原理,缓存淘汰策略,红黑树和二叉......
  • 代码随想录第10天:栈和队列基础操作
    语言:Java参考资料:代码随想录 232.用栈实现队列力扣题目链接(opensnewwindow)使用栈实现队列的下列操作:push(x)–将一个元素放入队列的尾部。pop()–从队列首部移除元素。peek()–返回队列首部的元素。empty()–返回队列是否为空。示例:MyQueuequeue......
  • ubuntu使用-ubuntu23.10中使QEMU的虚拟机与外部网络通信
    ubuntu使用-ubuntu23.10中使QEMU的虚拟机与外部网络通信ubuntuqemu银河麒麟参考了文档/网络/NAT和qemuaarch64虚拟机创建好后,使用NAT连接网络两个网页。一、概述要配置NAT网络,首先创建一个脚本/etc/qemu-ifup,这个脚本的作用是创建一个与任何物理端口都无关的网桥。给这个网......
  • Win10专业工作站版永久密钥(支持重装)
    Windows10专业工作站版是Windows10操作系统的一个专门版本,旨在满足对性能和可靠性有更高要求的用户的需求。它与Windows10专业版共享许多相同的功能,但也有一些独特的功能,使其更适合需要处理苛刻工作负载的计算机。Windows10专业工作站版的一些主要功能包括:对高达6......
  • NodeJS 高校学业预警系统 毕业设计-10551
    摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,教育行业当然也不能排除在外。高校学业预警系统是以实际运用为开发背景,运用软件工程开发方法,采用Node.JS技术构建的一个管理系统。整个开发过程首先对软件系......
  • 洛谷P1102 A-B数对
    双指针做法:  反过来,从后往前看也是一样的:#include<iostream>#include<stdio.h>#include<algorithm>#include<string>#include<cmath>#defineFor(i,j,n)for(inti=j;i<=n;++i)usingnamespacestd;constintN=2e5+5;int......
  • lowbit 树状数组
    ......