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

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.dtcms.com/a/313810.html

相关文章:

  • 从物理扇区到路径访问:Linux文件抽象的全景解析
  • 读写分离有那些坑?
  • 【企业架构】TOGAF概念之三
  • 【Linux | 网络】网络层(IP协议、NAT技术和ICMP协议)
  • 大模型 与 自驾 具身 3D世界模型等相关知识
  • GaussDB 数据库架构师(十二) 资源规划
  • 音视频文案字幕一键提取,免费使用,效率软件!
  • 开源的现代数据探索和可视化平台:Apache Superset 快速指南 Quickstart
  • 大模型探秘–AI 感知世界:从对话到掌控的交互革命
  • 13015计算机系统原理-速记宝典
  • 【Linux操作系统】简学深悟启示录:进程初步
  • Apache IoTDB(3):时序数据库 IoTDB Docker部署实战
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现人脸面部表情的追踪识别(C#代码UI界面版)
  • 商标续展如果逾期了还有办法补救吗?
  • 第1章-信息系统与信息技术发展
  • 案件线索展示与交付项目
  • C++11 nullptr:解决空指针语义模糊的终极方案
  • 疯狂星期四文案网第29天运营日记
  • 2.1 vue组件
  • 音视频学习笔记
  • Apache Spark 的结构化流
  • LiveQing视频推流点播流媒体常见问题-分屏展示页面如何显示直播间的名称多分屏视频画面监控
  • javacc学习笔记 02、JavaCC 语法描述文件的格式解析
  • iOS 内测上架流程详解:跨平台团队如何快速部署 TestFlight
  • iostat 系统IO监控命令学习
  • 墨者学院SQL过滤字符后手工注入漏洞测试(第1题)
  • uniapp快遞上門提貨的時間選擇的插件
  • Perl 面向对象编程深入解析
  • 【Git】常见命令整理
  • 工作流绑定卡片优化用户体验-练习我要找工作智能体