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

嵌入式开发学习日志(二维数组、 字符数组、 函数入门) day9 持续更新中

一、二维整型数组

1. 二维数组定义

格式:

类型说明符 数组名[行数][列数];

示例:

int a[3][4]; // 存储12个int数据 float b[3][4]; // 存储12个float数据

内存下标分布:

a[0][0]

a[0][1]

a[0][2]

a[0][3]

a[1][0]

a[1][1]

a[1][2]

a[1][3]

a[2][0]

a[2][1]

a[2][2]

a[2][3]

2. 二维数组的访问

格式:

数组名[行下标][列下标];

  • 行下标范围:0 ~ 行数-1

  • 列下标范围:0 ~ 列数-1

3. 二维数组的初始化

(1)全部初始化

int a[3][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}}; int a[][4] = {{1,2,3,4}, {5,6,7,8}, {9,10,11,12}}; int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; int a[][4] = {1,2,3,4,5,6,7,8,9,10,11,12};

注意:在二维数组有初始化值情况下,可以省略行数,不能省略列数

(2)局部初始化

int a[3][4] = {{1,2}, {5,6,7}, {9}}; int a[3][4] = {1,2,3,4,5,6,7,8}; int a[][4] = {1,2,3,4,5,6,7}; // 自动识别为2行4列

规则:未初始化数据按 0 存储

(3)全部初始化为 0

int a[3][4] = {0}; int a[][4] = {0}; // 自动识别为1行4列

(4)sizeof 计算行列

int a[2][3] = {{1, 2, 3}, {4, 5, 6}}; sizeof(a); // 总字节:6*4 = 24 sizeof(a[0][0]); // 单个元素字节:4 sizeof(a[0]); // 一行字节:4*3 = 12 // 计算行数 sizeof(a)/sizeof(a[0]); // 结果:2 // 计算列数 sizeof(a[0])/sizeof(a[0][0]); // 结果:3

4. 二维数组的存储方式

  • 单一性:数组内数据类型统一(示例 int)

  • 有序性:先行后列顺序存放

  • 连续性:内存空间连续 存储排布顺序:a[0][0] → a[0][1] → a[0][2] → a[0][3] → a[1][0] → a[1][1] → a[1][2] → a[1][3] → a[2][0] → a[2][1] → a[2][2] → a[2][3]

二、二维字符型数组

一维字符数组:保存一个字符串二维字符数组:保存多个字符串

1. 二维字符型数组定义

char 数组名[行数][列数];

示例:

char str[3][100]; // sizeof(str) → 3*100 = 300字节 // 可以存放:"hello world"、"how are you"、"xxxxxxx" 三组字符串

2. 二维字符型数组初始化

char str[3][100] = {0}; char str[3][100] = {{"hello"}, {"world"}, {"how"}}; char str[3][100] = {"hello", "world", "how"}; char str[3][100] = {"hello", "world"};

3. 二维字符型数组输入输出

输入示例:

char str[3][100] = {0}; for (int i = 0; i < 3; ++i) { gets(str[i]); }

输出示例:

for (int i = 0; i < 3; ++i) { puts(str[i]); //printf("%s\n", str[i]); }

补充提示:gets()函数 C11 标准已废弃,仅作课堂学习参考,正式开发建议替换。

三、函数基础

1. 函数定义

格式:

返回值 函数名(形参表) { 函数体; }

  • 返回值:支持 int、char 等基础类型、构造数据类型、void

    • 返回值:函数最终运算结果

    • void空类型:函数执行完成不需要返回结果时使用

  • 函数名:合法标识符,建议见名知意

    • 例:strcpy(string copy)、get_max_val ();

  • 形参表:函数执行需要用到的条件

    • 书写形式:数据类型 形参名, 数据类型 形参名, ...

2. 函数的调用

格式:

函数名(实参表);

实参表:传递给函数的具体数据(常量、变量、表达式) 调用规则:

  1. 实参个数和形参个数必须一致

  2. 实参、形参数据类型一致,或者互相兼容

  3. 实参和形参名字可以相同,也可以不相同

  4. 函数不调用则不执行;调用几次,执行几次

返回值规则:

  • 有明确返回类型的函数,必须使用return;缺少 return 系统返回随机值

  • void类型函数,可以省略 return,也可以单独写return;

概念区分:

  • 主调函数:发起调用的函数(典型:main 函数)

  • 被调函数:被别人调用的函数

四、知识点总结速记

  1. 二维数组初始化:可省行数,不可省略列数,未赋值元素默认 0;

  2. 二维数组内存连续,先行后列依次存放;

  3. char arr[N][M]:N 代表字符串数量,M 代表单个字符串最大长度;

  4. 函数:模块化代码,减少重复代码,降低程序耦合性;

  5. 形参写在定义处,实参写在调用处,个数、类型必须匹配。

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

相关文章:

  • 部队管理系统:人员车辆信息化管理系统
  • 手术机器人+生成式AI=新外科范式?斯坦福外科实验室披露:术中实时规划响应速度提升6.3倍,误差<0.17mm
  • 暖通公司做舒适家项目管道选哪个品牌?水系统五大组成部件配套、地面构造分层设计与舒适家交付标准化程度对比 - 小橘甄选
  • D3D8to9终极指南:让经典游戏在现代Windows上焕发新生
  • STM32F103外设全景解析:从GPIO到DMA的嵌入式开发核心
  • 嘉准BGS-E背景抑制光电传感器:过滤背景反光深色吸光干扰
  • FigmaCN中文汉化插件:3分钟让Figma界面说中文,设计师必备效率神器
  • 贵煌.刺梨火腿月饼:三分火腿香,七分刺梨爽,一口解锁贵州味
  • 数据可视化的星际新装:datart新增13款科技边框与11个未来感装饰元素
  • MEA优化BP神经网络在工业故障预测中的应用
  • 多行业差异化投放:不同的行业应该选择哪家软文营销平台?2026GEO获客落地指南
  • 坐标测量技术:用好程序镜像功能,让对称零件编程效率翻倍
  • 电解槽智能监测管理平台方案
  • 【make+google】用日程做高灵活度搞自动化AI个人知识库
  • 数据库中一些常用英文单词含义
  • 大模型技术入门:从原理到应用落地
  • α-β-γ滤波器:从原理到嵌入式C语言实现的卡尔曼滤波简化版
  • 解决Windows远程桌面CredSSP加密Oracle修正错误:从原理到实战修复
  • MATLAB App Designer实战:从脚本到图形化应用的开发指南
  • STM32系统架构与时钟树详解:从总线矩阵到时钟配置实战
  • RFID电子标签定制厂家能力评估,从绑定制程、复合精度到倒封装良率的核心指标拆解 - 小橘甄选
  • 别再混淆备份与归档!海量数据时代,企业数据保护需要双轨并行
  • 2026年短剧出海成本科普:咔咔猩与传统编剧定制模式对比分析
  • 【AI搜索代码问题终极指南】:20年资深架构师亲授5大高频场景的精准定位与秒级修复方案
  • 云端Android集群的终极底座:傲晨云手机如何凭开放架构赢得2026年8月开发者首选
  • USB协议深度解析:从枚举、传输类型到实战开发入门
  • 四一级空气能怎么选?这三点省电关键别忽略
  • 企业微信群机器人 Webhook 高效告警方案与限流应对策略
  • 《Tronlong 创龙 RK3588(TL3588-EVM / SBC-TL3588)大模型完整部署指南》
  • 北京地区 GEO 服务能力解读