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

C语言总结(五)---数组

前言

学习完循环的灵活运用后,我们迎来了 C 语言中批量处理数据的核心工具 —— 数组。此前我们用单个变量存储一个值,而面对一组同类型数据时,变量便力不从心。数组能有序、连续地存储多个相同数据,是衔接基础语法与实用编程的关键,帮我们真正实现批量数据的输入、处理与输出,为后续复杂程序打下扎实基础。

数组:用来保存多个数据类型相同的数据。

1.数组基础

(1)数组定义

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

  • 类型说明符:基本数据类型、构造数据类型(不能是 void类型)。说明数组中保存的数据的数据类型。

  • 数组名:遵循标识符的命名规则。

  • [常量]:数组中可以保存的元素的个数

int a[10]; sizeof(a); //40字节 char str[32]; //32字节 float array[5]; //20字节

类型说明符 数组名[] = {值1,值2};

当数组定义时,[]中的个数省略时,必须要初始化,将来按照初始化的元素个数决定数组的元素个数。

(2)数组元素的访问

数组名[下标];

[]:下标运算符

下标:代表要访问数组中的第几个元素(0--->元素个数-1)

常量、变量、表达式(结果都应该为整型或与整型兼容)

注意:

  • 数组元素访问时,下标从0开始到元素个数-1,超出该范围,则数组越界访问。

  • 数组名代表了数组这种类型,不能给数组名直接赋值。

(3)数组初始化

如果不初始化,数组默认存放随机值。

1)全部初始化

int a[7] = {1,2,3,4,5,6,7};

2)局部初始化

int a[7] = {1,2,3,4};

已初始化部分按照初始化数据存储,未初始化部分按0存储

3)初始化为全0

int a[7] = {0};

int a[7] = {0,0,0,0,0,0,0};

(4)数组的存储形式

  • 单一性:数组中的元素,每个元素的数据类型都是一致的

  • 有序性:数组中的元素按照a[0]-a[n]的顺序进行存储

  • 连续性:数组在内存中选取连续内存空间存储

数组越界:

  • 初始化数组时,初始化的元素个数超出了数组本身的元素个数。

  • 访问数组元素时,[]中的下标超出了数组元素的访问范围。

练习题:

1.从终端输入两个整型数据,获取这两个数的最大公约数和最小公倍数。

#include<stdio.h> int main(void) { int a = 0,b = 0; int i; int small; int gcd = 1; int lcm; scanf("%d %d",&a,&b); if(a > b) { small = b; } else { small = a; } for(i=small;i>=1;i--) { if(a % i == 0 && b % i == 0) { gcd = i; break; } } lcm = (a * b) / gcd; printf("gcd = %d\n",gcd); printf("lcm = %d\n",lcm); return 0; }

2.从终端输入10个数据存入数组,打印能被3整除余1的数据。

#include<stdio.h> int main(void) { int a[10] = {0}; int i = 0; int len = sizeof(a) / sizeof(a[0]); for(i = 0;i < len;++i) { scanf("%d",&a[i]); } for(i = 0;i < len;++i) { if(a[i] % 3 == 1) { printf("num = %d \n",a[i]); } } return 0; }

总结

数组是存储同类型多数据的重要结构,掌握它就掌握了批量数据处理的基础。定义时明确类型与长度,省略长度需初始化;访问用下标,牢记从 0 开始,杜绝越界。初始化灵活,未赋值元素自动补 0。它内存连续、存储有序,配合循环能高效处理批量数据。通过作业练习,把循环与数组结合使用,能切实提升编程实用性,为后续学习字符串、多维数组筑牢根基。

http://www.jsqmd.com/news/1286084/

相关文章:

  • Windows DNS缓存查看与管理:从基础命令到高级排错指南
  • Python实现质因数分解:从算法原理到代码优化与实战应用
  • 天光家具十大热门品牌真实横评,选定再拍不花冤枉钱 - 工业品牌热点
  • Claude Code 官方“投毒”标记中国用户翻车,这次国外用户也怒了
  • STM32驱动SPI彩屏:从硬件连接到DMA刷屏的完整实战指南
  • 2026年变压器企业工业软件服务商选型避坑要点 - 万相科技
  • Moco框架实战:轻量级HTTP API模拟工具的原理与应用
  • 如何用baidupankey实现百度网盘提取码的智能查询:技术视角解析
  • U8g2嵌入式显示库:从硬件抽象到性能优化的全攻略
  • 启发式合并:原理、应用与优化策略
  • 终极Flash浏览器指南:如何在Windows上完美运行经典Flash游戏
  • 北京地产新媒体营销体验测评及优质服务商推荐
  • RAG 中如何选择 Embedding 模型
  • 低成本实现舵机示教:从反馈信号到动作复现的完整实践
  • PLC顺序控制实战:定时器与比较指令实现电机顺序启停
  • NumPy结构化数组:高效处理混合类型数据的底层利器
  • SpringBoot+Vue论文管理平台开发实践
  • Dify知识库加密PDF解析失败?三步诊断与解决方案详解
  • 2026年值得信赖的打包带厂家推荐 体验服务品质之选 避坑指南 - 工业品牌热点
  • SAP PS模块WBS元素成本中心配置详解:从原理到实战避坑指南
  • Unity ARFoundation入门:从零实现平面检测与物体放置的AR应用
  • STM32F411 GPIO固件库开发详解:从寄存器原理到LED流水灯实战
  • Java技术体系全解析:从语言特性到生态应用
  • Intel硬件平台创客项目实战:从RealSense视觉到OpenVINO边缘AI部署
  • 电容与电感工程应用全解析:从基础原理到选型设计实战
  • 荣誉背书下的品质承诺:从政府专项资金看软件怪兽轻断食app的硬核实力
  • Nacos插件机制解析与自定义开发实践
  • 商业无菌级母婴水真的靠谱,冲奶粉不用烧开的秘密 - 工业品牌热点
  • 工业物联网通信模块选型与PIC18F4515硬件协同设计
  • PyQt与KIMI AI开发EEG信号分析GUI工具实践