当前位置: 首页 > article >正文

【C语言】数组篇

目录

  • 引言
  • 一维数组
    • 数组的定义
    • 数组的初始化
      • 完全初始化
      • 部分初始化
      • 省略数组长度
    • 数组元素的访问
  • 多维数组
    • 二维数组的定义
    • 二维数组的初始化
      • 完全初始化
      • 部分初始化
      • 省略第一维长度
    • 二维数组元素的访问
  • 遍历数组元素
    • 遍历一维数组
    • 遍历二维数组
  • 数组作为函数参数
    • 一维数组作为函数参数
    • 二维数组作为函数参数
  • 注意事项
    • 数组越界
    • 数组名作为指针
  • 总结

引言

在 C 语言的世界里,数组是一种基础且强大的数据结构。它就像一个整齐排列的盒子,每个盒子都可以存放相同类型的数据。通过合理使用数组,我们能够高效地处理大量的数据。本文将从数组的基本概念入手,逐步深入探讨其在实际编程中的应用。

一维数组

数组的定义

在 C 语言中,定义一维数组的语法如下:

类型说明符 数组名[常量表达式];

这里的类型说明符决定了数组中每个元素的类型,比如int表示整数类型,float 表示浮点类型等。数组名是我们给这个数组起的名字,方便后续引用。而常量表达式则规定了数组的长度,也就是数组中元素的个数。
例如:

int scores[5];

这行代码定义了一个名为 scores 的整数数组,它可以存储 5 个整数。需要注意的是,常量表达式必须是一个常量或者常量表达式,不能是变量。

数组的初始化

数组的初始化有多种方式,下面我们来逐一介绍。

完全初始化

当我们知道数组中每个元素的值时,可以进行完全初始化。

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

在这个例子中,数组 numbers 的 5 个元素分别被初始化为 1、2、3、4、5。

部分初始化

如果只知道数组的部分元素值,其余元素会被自动初始化为 0。

int numbers[5] = {
   1, 2};

此时,numbers[0] 为 1,numbers[1] 为 2,而 numbers[2]、numbers[3] 和 numbers[4] 都为 0。

省略数组长度

当我们在初始化时提供了所有元素的值,可以省略数组的长度,编译器会自动根据初始化的值来确定数组的长度。

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

这里数组 numbers 的长度被编译器确定为 5。

数组元素的访问

数组元素通过下标来访问,下标从 0 开始。例如,对于前面定义的numbers数组,numbers[0]表示数组的第一个元素,numbers[1]表示第二个元素,以此类推。

#include <stdio.h>

int main() {
   
    int numbers[5] = {
   1, 2, 3, 4, 5};
    printf("The first element is: %d\n", numbers[0]);
    printf("The third element is: %d\n", numbers[2]);
    return 0;
}

在这段代码中,我们通过下标访问了数组numbers的第一个和第三个元素,并将它们打印输出。

多维数组

二维数组的定义

二维数组可以看作是一个矩阵,它的定义语法如下:

类型说明符 数组名[常量表达式1][常量表达式2];

常量表达式 1 表示数组的行数,常量表达式 2 表示数组的列数。
例如:

int matrix[3][4];

这定义了一个 3 行 4 列的二维数组matrix。

二维数组的初始化

二维数组的初始化也有多种方式。

完全初始化

int matr

http://www.kler.cn/a/572954.html

相关文章:

  • AI提示语-前端开发
  • deepseek在pycharm 中的配置和简单应用
  • 基于遗传算法的无人机三维路径规划仿真步骤详解
  • 代码随想录算法训练营第五十七天| 图论03
  • 《基于 LIME 的低照度图像处理》开题报告
  • 备份docker下的mysql的表结构,视图,函数 以及 指定表的数据
  • 【代码分享】基于IRM和RRT*的无人机路径规划方法详解与Matlab实现
  • 阿里云 linux centos7安装nacos
  • GitLab Pages 托管静态网站
  • 试过了,多模态大模型Qwen/Qwen2.5-VL-3B-Instruct需要21G显存,我还是太天真啊!
  • 【Azure 架构师学习笔记】- Azure Databricks (15) --Delta Lake 和Data Lake
  • Java8-Stream流介绍和使用案例
  • 腾讯云账号获取SecretId和SecretKey及混元模型调用
  • Dify 开源大语言模型应用开发平台使用(一)
  • 快速开始React开发(一)
  • 【练习】【二叉树】力扣热题100 543. 二叉树的直径
  • Sourcetrail 代码分析工具
  • 生产制造业务的核心--全面质量管理人机料法环
  • 基于Matlab/Simulink永磁直驱风电低电压穿越(LVRT)控制仿真模型
  • Unity3D 布料模拟(Cloth Simulation)详解