当前位置: 首页 > 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.lryc.cn/news/610302.html

相关文章:

  • AI产品经理面试宝典第61天:AI产品体验、数据安全与架构实战解析
  • 倒排索引:Elasticsearch 搜索背后的底层原理
  • 无公网环境下在centos7.9上使用kk工具部署k8s平台(amd64架构)
  • 数字信号处理_编程实例1
  • 【前端】JavaScript基础知识及基本应用
  • C++ STL list容器详解:从基础使用到高级特性
  • AI绘图-Stable Diffusion-WebUI的基本用法
  • SwiftUI ios开发中的 MVVM 架构深度解析与最佳实践
  • 深度学习零基础入门(4)-卷积神经网络架构
  • (JAVA)自建应用调用企业微信API接口,设置企业可信IP
  • 流量见顶时代,知识付费 IP 的破局逻辑
  • 汇川PLC通过ModbusTCP转Profinet网关连接西门子PLC配置案例
  • 飞算 JavaAI 实战:从代码生成到架构优化的全场景应用指南
  • 机试备考笔记 4/31
  • springboot博客实战笔记01
  • 登Nature子刊,基于基因测序和机器学习的废水流行病学评估,病毒检出时间最高提前4周
  • 机器学习(11):岭回归Ridge
  • 服务器的Mysql 集群技术
  • 经典设计模式
  • YOLO11涨点优化:原创自研DSAM注意力!基于BiLevelRoutingAttention的颠覆性升级
  • 06 基于sklearn的机械学习-欠拟合、过拟合、正则化、逻辑回归
  • Ethereum: 深度解析Web3世界的合规之门, ERC-1400证券型代币标准
  • ISCC认证:可持续生产的新标杆。ISCC如何更快认证
  • 线程互斥锁:守护临界区的关键
  • 服务器数据安全:利用阿里云OSS/腾讯云COS实现网站数据自动备份
  • 2.5 DICOM 传输语法(Transfer Syntaxes)
  • 【Canvas与文字】生存与生活
  • 文件与目录操作命令
  • SRIO入门之官方例程仿真验证
  • History 模式 vs Hash 模式:Vue Router 技术决策因素详解