C 语言数组教程:定义、访问、修改、循环遍历及多维数组解析

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
应用实时监控服务-用户体验监控,每月100OCU免费额度
简介: 数组用于将多个值存储在单个变量中,而不是为每个值声明单独的变量。要创建数组,请定义数据类型(例如 int)并指定数组名称,后面跟着方括号 []。要将值插入其中,请使用逗号分隔的列表,并在花括号内使用

C 数组

数组用于将多个值存储在单个变量中,而不是为每个值声明单独的变量。

要创建数组,请定义数据类型(例如 int)并指定数组名称,后面跟着方括号 []

要将值插入其中,请使用逗号分隔的列表,并在花括号内使用:

int myNumbers[] = {
   25, 50, 75, 100};
AI 代码解读

现在我们已经创建了一个变量,其中包含一个包含四个整数的数组。

访问数组元素

要访问数组元素,请参阅其索引号。

数组索引从 0 开始:[0] 是第一个元素。 [1] 是第二个元素,等等。

以下语句访问 myNumbers 中第一个元素 [0] 的值:

printf("%d", myNumbers[0]);

// 输出 25
AI 代码解读

更改数组元素

要更改特定元素的值,请参阅索引号:

myNumbers[0] = 33;
AI 代码解读

循环遍历数组

您可以使用 for 循环遍历数组元素。

以下示例输出 myNumbers 数组中的所有元素:

int myNumbers[] = {
   25, 50, 75, 100};
int i;

for (i = 0; i < 4; i++) {
   
  printf("%d\n", myNumbers[i]);
}
AI 代码解读

设置数组大小

另一种常见的方法是创建数组,指定数组的大小,然后添加元素:

// 声明一个包含四个整数的数组:
int myNumbers[4];

// 添加元素
myNumbers[0] = 25;
myNumbers[1] = 50;
myNumbers[2] = 75;
myNumbers[3] = 100;
AI 代码解读

使用这种方法,您应该事先知道数组元素的数量,以便程序存储足够的内存。

创建数组后,您无法更改数组的大小。

获取数组大小或长度

要获取数组的大小,可以使用 sizeof 运算符:

int myNumbers[] = {
   10, 25, 50, 75, 100};
printf("%lu", sizeof(myNumbers)); // 打印 20
AI 代码解读

为什么结果显示 20 而不是 5,当数组包含 5 个元素时?

  • 这是因为 sizeof 运算符返回类型的大小(以字节为单位)。

一个 int 类型通常是 4 个字节,因此从上面的示例中,4 x 5(4 字节 x 5 个元素)= 20 字节。

当您使用需要良好内存管理的大型程序时,了解数组的内存大小非常有用。

但是,当您只想找出数组有多少个元素时,可以使用以下公式(将数组的大小除以一个数组元素的大小):

int myNumbers[] = {
   10, 25, 50, 75, 100};
int length = sizeof(myNumbers) / sizeof(myNumbers[0]);

printf("%d", length); // 打印 5
AI 代码解读

改进循环

在上面的数组循环部分,我们在循环条件 (i < 4) 中写了数组的大小。这并不理想,因为它只适用于特定大小的数组。

但是,通过使用上面示例中的 sizeof 公式,我们现在可以编写适用于任何大小数组的循环,这更可持续。

而不是写:

int myNumbers[] = {
   25, 50, 75, 100};
int i;

for (i = 0; i < 4; i++) {
   
  printf("%d\n", myNumbers[i]);
}
AI 代码解读

最好写:

int myNumbers[] = {
   25, 50, 75, 100};
int length = sizeof(myNumbers) / sizeof(myNumbers[0]);
int i;

for (i = 0; i < length; i++) {
   
  printf("%d\n", myNumbers[i]);
}
AI 代码解读

C 多维数组

数组,也称为单维数组。这些非常棒,是您在 C 语言编程中会经常使用的东西。然而,如果您想要将数据存储为表格形式,例如带有行和列的表格,则需要熟悉多维数组。

多维数组本质上是数组的数组。

数组可以具有任何数量的维度。我将介绍最常见的一种;二维数组 (2D)。

二维数组

二维数组也称为矩阵(带行列的表格)。

要创建整数的二维数组,请看以下示例:

int matrix[2][3] = {
    {
   1, 4, 2}, {
   3, 6, 8} };
AI 代码解读

第一个维度表示行数 [2],而第二个维度表示列数 [3]。值按行顺序放置,可以这样可视化:

1 4 2
3 6 8

访问二维数组的元素

要访问二维数组的元素,您必须指定行和列的索引号。

以下语句访问 matrix 数组第一行 (0) 和第三列 (2) 中元素的值。

int matrix[2][3] = {
    {
   1, 4, 2}, {
   3, 6, 8} };

printf("%d", matrix[0][2]); // 输出 2
AI 代码解读

请记住:

  • 数组索引从 0 开始: [0] 是第一个元素。 [1] 是第二个元素,等等。

更改二维数组中的元素

要更改元素的值,请参考每个维度的元素索引号:

以下示例将更改第一行 (0) 和第一列 (0) 中元素的值:

int matrix[2][3] = {
    {
   1, 4, 2}, {
   3, 6, 8} };
matrix[0][0] = 9;

printf("%d", matrix[0][0]); // 现在输出 9 而不是 1
AI 代码解读

循环遍历二维数组

要循环遍历多维数组,您需要为数组的每个维度设置一个循环。

以下示例输出 matrix 数组中的所有元素:

int matrix[2][3] = {
    {
   1, 4, 2}, {
   3, 6, 8} };

int i, j;
for (i = 0; i < 2; i++) {
   
  for (j = 0; j < 3; j++) {
   
    printf("%d\n", matrix[i][j]);
  }
}
AI 代码解读

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

目录
打赏
0
1
1
0
245
分享
相关文章
C语言结合AWTK开发HTTP接口访问界面
这样,我们就实现了在C语言中使用libcurl和AWTK来访问HTTP接口并在界面上显示结果。这只是一个基础的示例,你可以根据需要添加更多的功能和优化。例如,你可以添加错误处理机制、支持更多HTTP方法(如POST、PUT等)、优化用户界面等。
72 26
策略模式(Strategy Pattern)深度解析教程
策略模式属于行为型设计模式,通过定义算法族并将其封装为独立的策略类,使得算法可以动态切换且与使用它的客户端解耦。该模式通过组合替代继承,符合开闭原则(对扩展开放,对修改关闭)。
深入探索 BPMN、CMMN 和 DMN:从定义到应用的全方位解析
在当今快速变化的商业环境中,对象管理组织(OMG)推出了三种强大的建模标准:BPMN(业务流程模型和符号)、CMMN(案例管理模型和符号)和DMN(决策模型和符号)。它们分别适用于结构化流程管理、动态案例处理和规则驱动的决策制定,并能相互协作,覆盖更广泛的业务场景。BPMN通过直观符号绘制固定流程;CMMN灵活管理不确定的案例;DMN以表格形式定义清晰的决策规则。三者结合可优化企业效率与灵活性。 [阅读更多](https://example.com/blog)
深入探索 BPMN、CMMN 和 DMN:从定义到应用的全方位解析
|
3月前
|
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
111 20
新手上云教程参考:阿里云服务器租用、域名注册、备案及域名解析流程图文教程
对于想要在阿里云上搭建网站或应用的用户来说,购买阿里云服务器和注册域名,绑定以及备案的流程至关重要。本文将以图文形式为您介绍阿里云服务器购买、域名注册、备案及绑定的全流程,以供参考,帮助用户轻松上手。
阿里云发票申请图文教程及常见问题解析
在购买完阿里云服务器或者其他云产品之后,如何申请发票成为了许多用户关注的焦点。尤其是对于初次购买阿里云服务器的用户来说,发票申请流程可能并不熟悉。本文将为大家详细介绍阿里云服务器购买之后如何申请发票,以及申请过程中可能遇到的常见问题,帮助大家轻松完成发票申请。
最细最有条理解析:事件循环(消息循环)是什么?为什么JS需要异步
度一教育的袁进老师谈到他的理解:单线程是异步产生的原因,事件循环是异步的实现方式。 本质是因为渲染进程因为计算机图形学的限制,只能是单线程。所以需要“异步”这个技术思想来解决页面阻塞的问题,而“事件循环”是实现“异步”这个技术思想的最主要的技术手段。 但事件循环并不是全部的技术手段,比如Promise,虽然受事件循环管理,但是如果没有事件循环,单一Promise依然能实现异步不是吗? 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您
阿里云轻量应用服务器产品解析与搭建个人博客网站教程参考
轻量应用服务器(Simple Application Server)作为阿里云面向单机应用场景推出的云服务器产品,以其一键部署、一站式管理、高性价比等特性,深受个人开发者、中小企业及入门级用户的喜爱。本文将全面解析阿里云轻量应用服务器的产品优势、应用场景、使用须知,以及使用轻量应用服务器搭建个人博客网站的详细教程,帮助用户更好地了解和使用这一产品。
【C语言】深入解析C语言结构体:定义、声明与高级应用实践
通过根据需求合理选择结构体定义和声明的放置位置,并灵活结合动态内存分配、内存优化和数据结构设计,可以显著提高代码的可维护性和运行效率。在实际开发中,建议遵循以下原则: - **模块化设计**:尽可能封装实现细节,减少模块间的耦合。 - **内存管理**:明确动态分配与释放的责任,防止资源泄漏。 - **优化顺序**:合理排列结构体成员以减少内存占用。
340 14
阿里云服务器租用、注册域名、备案及域名解析完整流程参考(图文教程)
对于很多初次建站的用户来说,选购云服务器和注册应及备案和域名解析步骤必须了解的,目前轻量云服务器2核2G68元一年,2核4G4M服务器298元一年,域名注册方面,阿里云推出域名1元购买活动,新用户注册com和cn域名2年首年仅需0元,xyz和top等域名首年仅需1元。对于建站的用户来说,购买完云服务器并注册好域名之后,下一步还需要操作备案和域名绑定。本文为大家展示阿里云服务器的购买流程,域名注册、绑定以及备案的完整流程,全文以图文教程形式为大家展示具体细节及注意事项,以供新手用户参考。

云原生

+关注

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等