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

C语言的数组与字符串

C的数组与字符串

数组和字符串是C语言中用于存储和处理数据的重要数据结构。掌握数组和字符串的定义、使用以及相关操作函数,是编写高效和功能丰富的C程序的基础。


1 一维数组的定义与使用

一维数组是一组相同数据类型元素的集合,每个元素可以通过索引访问。数组在内存中是连续存储的,便于高效地访问和操作数据。

数组的定义

语法

数据类型 数组名[数组大小];
  • 数据类型:数组中元素的类型,如intfloat等。
  • 数组名:数组的名称,用于引用数组。
  • 数组大小:数组中元素的个数,必须是一个常量表达式。

示例

#include <stdio.h>int main() {int numbers[5]; // 定义一个包含5个整数的数组return 0;
}
数组的初始化

数组可以在定义时进行初始化,赋予每个元素初始值。如果未完全初始化,未赋值的元素会被自动初始化为零。

语法

数据类型 数组名[数组大小] = {元素1, 元素2, ..., 元素n};

示例

#include <stdio.h>int main() {int numbers[5] = {1, 2, 3, 4, 5}; // 完全初始化int scores[5] = {90, 85}; // 部分初始化,剩余元素自动为0// 输出数组元素for (int i = 0; i < 5; i++) {printf("scores[%d] = %d\n", i, scores[i]);}return 0;
}

输出

scores[0] = 90
scores[1] = 85
scores[2] = 0
scores[3] = 0
scores[4] = 0
访问和修改数组元素

数组元素通过索引访问,索引从0开始。可以通过索引读取或修改特定位置的元素。

示例

#include <stdio.h>int main() {int numbers[5] = {10, 20, 30, 40, 50};// 访问数组元素printf("第一个元素: %d\n", numbers[0]); // 输出 10printf("第三个元素: %d\n", numbers[2]); // 输出 30// 修改数组元素numbers[1] = 25; // 将第二个元素修改为25printf("修改后的第二个元素: %d\n", numbers[1]); // 输出 25return 0;
}

输出

第一个元素: 10
第三个元素: 30
修改后的第二个元素: 25
数组的遍历

遍历数组意味着依次访问数组中的每个元素,通常使用for循环实现。

示例

#include <stdio.h>int main() {int numbers[5] = {1, 2, 3, 4, 5};int sum = 0;// 使用for循环遍历数组for (int i = 0; i < 5; i++) {printf("numbers[%d] = %d\n", i, numbers[i]);sum += numbers[i]; // 累加元素值}printf("数组元素之和: %d\n", sum); // 输出 15return 0;
}

输出

numbers[0] = 1
numbers[1] = 2
numbers[2] = 3
numbers[3] = 4
numbers[4] = 5
数组元素之和: 15
多种数组初始化方式
  1. 部分初始化

    int numbers[5] = {1, 2}; // numbers = {1, 2, 0, 0, 0}
    
  2. 不指定大小,由初始化列表决定

    int numbers[] = {1, 2, 3, 4, 5}; // 自动推断数组大小为5
    
  3. 全部元素初始化为零

    int numbers[5] = {0}; // numbers = {0, 0, 0, 0, 0}
    

示例

#include <stdio.h>int main() {int a[5] = {1, 2}; // 部分初始化int b[] = {3, 4, 5}; // 自动推断大小为3int c[5] = {0}; // 全部初始化为0// 输出数组aprintf("数组a: ");for (int i = 0; i < 5; i++) {printf("%d ", a[i]);}printf("\n");// 输出数组bprintf("数组b: ");for (int i = 0; i < 3; i++) {printf("%d ", b[i]);}printf("\n");// 输出数组cprintf("数组c: ");for (int i = 0; i < 5; i++) {printf("%d ", c[i
http://www.xdnf.cn/news/16981.html

相关文章:

  • 力扣热题100——双指针
  • Hadoop MapReduce 3.3.4 讲解~
  • SpringBoot自动装配原理
  • 36.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--缓存Token
  • 编程算法:技术创新与业务增长的核心驱动力
  • IDA9.1使用技巧(安装、中文字符串显示、IDA MCP服务器详细部署和MCP API函数修改开发经验)
  • 电商直播流量爆发式增长,华为云分布式流量治理与算力调度服务的应用场景剖析
  • 构建属于自己的第一个 MCP 服务器:初学者教程
  • 从零认识OpenFlow
  • 学习游戏制作记录(角色属性和状态脚本)8.4
  • 【Linux指南】软件安装全解析:从源码到包管理器的进阶之路
  • AI鉴伪技术鉴赏:“看不见”的伪造痕迹如何被AI识破
  • Java项目:基于SSM框架实现的电子病历管理系统【ssm+B/S架构+源码+数据库+毕业论文+远程部署】
  • Git如何同步本地与远程仓库并解决冲突
  • 【iOS】渲染原理离屏渲染
  • 打造个人数字图书馆:LeaNote+cpolar如何成为你的私有化知识中枢?
  • 时序数据库如何高效处理海量数据
  • Spring P1 | 创建你的第一个Spring MVC项目(IDEA图文详解版,社区版专业版都有~)
  • 【数据库】使用Sql Server创建索引优化查询速度,一般2万多数据后,通过非索引时间字段排序查询出现超时情况
  • Anthropic 禁止 OpenAI 访问 Claude API:商业竞争与行业规范的冲突
  • 接口重试方案,使用网络工具的内置重试机制,并发框架异步重试,Spring Retry,消息队列重试,Feign调用重试,监控与报警,避坑指南
  • Linux 系统启动原理
  • mac 技巧
  • Postman 四种请求体格式全解析:区别、用法及 Spring Boot 接收指南
  • 手搓TCP服务器实现基础IO
  • 华为2288H V5服务器闪红灯 无法开机案例
  • 8.4IO进程线程——进程
  • 1.2 医学影像处理基本概念
  • 【OpenAI API】API接口介绍
  • Mac桌面仿制项目--让ai一句话生成的