【C 语言入门】Day09 二维字符数组、函数基础与变量存储类型全解析
本文为 C 语言学习第九天的知识点整理涵盖二维字符数组用法、函数的定义 / 调用 / 声明以及变量作用域、生存周期和四种存储类型详解文章目录1. 二维字符型数组1.1 功能与定义1.2 元素访问1.3 五种初始化方式2. 函数基础2.1 函数的作用2.2 函数的定义2.3 函数的调用2.4 函数的声明3. 变量的作用域与生存周期3.1 作用域空间维度哪里能用3.2 生存周期时间维度存在多久4. 变量的四大存储类型4.1 auto 自动型局部变量默认4.2 register 寄存器型4.3 extern 外部声明4.4 static 静态存储重点考点今日知识点总结1. 二维字符型数组1.1 功能与定义二维字符数组的核心作用是存储和操作多个字符串可以理解为 “字符串数组”—— 每一行存放一个独立的字符串。语法格式char 数组名[行数][每行最大字符数];示例char str[5][32]; // 共5行每行最多存31个有效字符 1个结束符\0注意每行长度要预留一个位置给字符串结束符\0因此 32 字节的行最多存放 31 个有效字符。1.2 元素访问二维字符数组有两种常用访问粒度访问单个字符str[行号][列号]得到一个char类型字符访问一整行字符串str[行号]得到一个字符数组首地址可直接当作字符串使用str[0][2]; // 访问第0行第2列的单个字符 str[0]; // 访问第0行的整串字符等价于字符串首地址1.3 五种初始化方式方式 1逐个字符赋值最原始char str[5][32] { {h, e, l, l, o, \0}, {w, o, r, l, d, \0}, {h, o, w, \0}, {a, r, e, \0}, {y, o, u, \0} };手动写每个字符必须手动补充\0结束符。方式 2字符串逐行大括号包裹char str[5][32] {{hello}, {world}, {how}, {are}, {you}};每个字符串用双引号系统自动追加\0。方式 3省略内层大括号最常用char str[5][32] {hello, world, how, are, you};按顺序依次给每行赋值写法最简洁。方式 4全零初始化char str[5][32] {0};所有元素初始化为\0即空字符串。方式 5省略行数char str[][32] {hello, world, how, are, you};列数不能省略行数可以省略编译器会根据初始化的字符串数量自动计算行数。2. 函数基础2.1 函数的作用避免重复代码相同逻辑只写一次多处调用减少代码冗余模块化编程将复杂程序拆分为多个功能模块每个函数负责一个功能提升代码可读性与可维护性2.2 函数的定义函数定义就是写出函数的具体实现代码语法格式返回值类型 函数名(数据类型1 形参1, 数据类型2 形参2, ...) { 函数体语句; return 返回值; }四个核心概念函数名命名规则与变量名一致遵循标识符命名规范形参形式参数定义在函数括号内用来接收外部传入的数据描述函数的处理方式返回值类型函数类型函数执行结束后返回结果的数据类型若返回值类型与return后的值类型不一致以函数类型为准自动强制转换不写函数类型时C 语言默认为int类型无返回值的函数必须显式写void不能省略返回值函数运行的最终结果通过return返回给主调函数2.3 函数的调用语法函数名(实参1, 实参2, ...);关键规则主调函数与被调函数主动发起调用的是主调函数被调用执行的是被调函数参数传递调用时实参的值会拷贝一份传递给形参是值传递实参与形参的个数必须一一对应若类型不匹配实参会自动强制转换为形参的类型再传递函数调用的本质函数调用表达式的类型 函数的返回值类型值 return 返回的值2.4 函数的声明函数声明的作用是告诉编译器有这个函数存在解决 “函数定义在调用之后” 的编译报错问题。规则被调函数定义在主调函数上方无需声明可直接调用被调函数定义在主调函数下方必须在调用之前进行函数声明声明格式返回值类型 函数名(形参类型列表);例如int add(int a, int b);或简写为int add(int, int);3. 变量的作用域与生存周期这是两个完全不同维度的概念务必区分清楚3.1 作用域空间维度哪里能用指变量能够被合法访问的代码范围。局部变量作用域限定在定义该变量的最近一对大括号{}内出了括号就无法访问全局变量作用域覆盖整个当前源文件配合extern可扩展到工程内其他文件3.2 生存周期时间维度存在多久指变量从被分配内存空间到空间被系统回收的整个时间段。局部变量进入代码块时创建离开时销毁全局变量程序启动时创建程序结束时销毁4. 变量的四大存储类型存储类型直接决定了变量的存储位置、生存周期、默认初始值完整定义语法存储类型 数据类型 变量名;例如auto int a;等价于我们平时写的int a;4.1 auto 自动型局部变量默认存储位置内存栈区作用域局部作用域仅最近的{}内可用生存周期执行到定义语句时开辟空间离开作用域立即回收初始值未手动初始化时为随机垃圾值特点局部变量默认就是auto类型关键字通常省略不写4.2 register 寄存器型存储位置建议存入 CPU 内部寄存器读写速度远快于内存寄存器不足时自动退化为auto存入栈区作用域仅局部作用域只能修饰局部变量生存周期与auto一致离开作用域立即回收初始值未初始化时为随机值4.3 extern 外部声明核心作用声明而非定义告诉编译器 “这个全局变量 / 函数在其他源文件中已经定义”用于跨文件访问存储位置不分配新空间对应变量本身存放在静态区易错点extern只做声明不能附带初始化例如extern int a;正确extern int a 10;错误4.4 static 静态存储重点考点存储位置内存静态区数据段生存周期编译阶段就分配空间程序运行全程存在程序结束后才回收初始值未手动初始化时默认自动赋值为0核心特性整个程序运行中只初始化一次根据修饰对象不同效果分为两类① static 修饰局部变量作用域不变仍然只能在当前{}内访问生命周期延长离开作用域后空间不回收下次进入代码块时保留上一次的值② static 修饰全局变量 / 函数生命周期不变仍然是程序全程存在作用域收缩原本可跨文件访问的全局变量加static后只能在当前源文件内使用其他文件无法通过extern调用起到封装和避免命名冲突的作用今日知识点总结二维字符数组本质是字符串数组str[i]代表第 i 行字符串str[i][j]代表单个字符初始化时行数可省、列数不可省。函数包含定义、调用、声明三要素值传递是实参向形参拷贝数据形参修改不影响实参。作用域看空间范围生存周期看存在时长二者不可混淆。四种存储类型中static是最高频考点修饰局部变量延长生命周期修饰全局变量收缩作用域且全程只初始化一次、默认值为 0。

相关新闻

北京华恒智信破解建设国企权责错位推诿扯皮难题

北京华恒智信破解建设国企权责错位推诿扯皮难题

【客户行业】建筑行业【问题类型】职责优化【客户背景】某大型建设公司拥有多项工程类一级资质,目前在施项目达数十个,业务类型丰富多元,项目分布遍及全国,并参与了多个大中型的资金密集型交通基础设施建设,在当地建筑…

2026/10/20 13:12:18 阅读更多 →
北京华恒智信破解餐饮公司服务质量参差不齐难题

北京华恒智信破解餐饮公司服务质量参差不齐难题

【客户行业】餐饮行业 【问题类型】岗位规划与职业化标准 【客户背景】 某餐饮集团起源于一家乡镇小餐馆,凭借良好口碑积累与业务持续增长,逐步发展壮大为国内具有较高知名度的连锁餐饮品牌。面对日益激烈的市场角逐与消费者需求不断迭代的外部环境&a…

2026/10/21 10:59:02 阅读更多 →
跨境电商工具怎么选?从选品、图片翻译到上架运营的一套效率工具清单

跨境电商工具怎么选?从选品、图片翻译到上架运营的一套效率工具清单

很多新手卖家刚开始做跨境电商时,会把重点放在“开哪个平台”“卖什么产品”“怎么发货”上。等真正开始上架商品,才发现每天卡住自己的不是某一个单点问题,而是一整套流程: 选品、找货源、整理商品资料、处理主图、翻译详情页图…

2026/10/20 12:40:55 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/10/21 9:32:40 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/10/21 9:32:40 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/10/21 9:32:40 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/10/21 9:32:40 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/10/21 9:32:40 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/10/21 9:31:32 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起:用户到底在追求什么“封号重开”这四个字,放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流,背后是大量的时间和精力成本。正常情况下,没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”,而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时,就意识到:单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/21 4:27:17 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →