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

day 8:C语言二维字符数组与函数详解

一、二维字符型数组

1. 功能

二维字符型数组主要用于存储和操作字符串数组。

2. 定义

char str[5][32];

定义了一个包含5个字符串的数组,每个字符串最大长度为31个字符(加上结束符'\0')。

3. 元素的访问

  • str[0][2]:访问单个字符元素(char类型)
  • str[0]:访问第一行字符数组(char [32]类型)

4. 数组的初始化

4.1 二维整型数组初始化示例
int a[2][3] = {1, 2, 3, 4, 5, 6}; int a[2][3] = {{1, 2, 3}, {4, 5, 6}}; int a[2][3] = {1, 2, 3, 4}; int a[2][3] = {{1, 2}, {3}}; int a[2][3] = {0}; int a[2][3] = {{0}};
int a[][3] = {1, 2, 3, 4, 5, 6}; int a[][3] = {1, 2, 3, 4}; int a[][3] = {{1, 2}, {3}};
4.2 二维字符数组初始化示例
// 方式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'} }; // 方式2:字符串初始化(带花括号) char str[5][32] = { {"hello"}, {"world"}, {"how"}, {"are"}, {"you"} }; // 方式3:字符串初始化(简化) char str[5][32] = {"hello", "world", "how", "are", "you"}; // 方式4:全部初始化为0 char str[5][32] = {0}; // 方式5:省略第一维大小 char str[][32] = {"hello", "world", "how", "are", "you"};

二、函数

1. 功能

  • 能够避免重复性代码
  • 可以让程序模块化

2. 函数的三种形式

2.1 函数的定义
函数类型 函数名(数据类型1 形参1, 数据类型2 形参2, ...) { 函数体; return 返回值; }

函数名:与变量名要求保持一致

形参:形式参数,用来展示函数对数据的处理方式

函数类型:函数运行结果的类型

  • 返回值类型与函数类型不一致时,以函数类型为准
  • 函数类型如果不写默认为int类型
  • 如果想设置为void类型返回值,必须将函数类型写成void

返回值:函数的运行结果

2.2 函数的调用
函数名(实参1, 实参2, ...);

调用:可以通过函数名加实参使用函数

  • 主调函数:主动调用函数的函数称为主调函数
  • 被调函数:被别人调用的函数称为被调函数

传参:主调函数调用被调函数,会将实参的值传递给形参

  • 实参个数与形参个数必须一一对应
  • 如果实参与形参类型不匹配,则将实参类型强制类型转换为形参类型再传参

函数调用结果类型为函数类型

函数调用结果的值为函数的返回值

2.3 函数的声明
  • 如果被调函数在主调函数下方定义,需要在主调函数上方声明被调函数
  • 如果被调函数在主调函数上方定义,不需要声明被调函数

3. 变量的作用域和生存周期

3.1 变量的作用域:能够使用变量的范围
  • 局部变量:变量作用域在定义该变量最近的大括号内
  • 全局变量:变量的作用域在本文件中均可使用
3.2 变量的生存周期:变量从被开辟空间到空间被回收的整个过程称为生存周期

4. 变量的存储类型

4.1 变量的定义
存储类型 数据类型 变量名; int a; auto int a;
4.2 存储类型
  1. 自动型存储、局部变量(默认):auto
    • 将变量存放在栈区
    • 局部变量未经初始化为随机值
    • 执行到变量定义时为变量开辟空间
    • 执行到超过变量作用域范围被回收
  2. 寄存器存储:register
    • 将变量存放在CPU内部的寄存器中,如果寄存器存满了等价于auto类型
  3. 外部声明:extern
    • 声明变量或者函数是外部存储的
  4. 静态存储:static
    • 将变量存放在静态区中
    • 未经初始化时值为0值
    • 编译代码时为变量分配空间,执行时加载到数据区中
    • 程序结束回收空间
    • 限定变量/函数作用域只能在本文件中使用
    • 防止多文件编程时变量名或函数名冲突

5. 函数传参

5.1 值传递

实参将值传递给形参,形参拿到实参的值实现后续的操作

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

相关文章:

  • 混合检索是什么?为什么纯关键词和语义搜索都会翻车
  • Python序列类型全解析:从列表元组字符串到高效数据处理实战
  • Python底层运行环境构建与优化实践指南
  • Cubase 15.0.30 Pro最新版VR/R2R下载一键安装完整版Cubase 15下载安装教程支持Win/Mac双系统版送104G原厂音源Mac系统苹果不关SIP安装Cubase15最新版下载
  • 谷歌Frozen v2芯片转向片上SRAM:AI芯片内存架构的技术变革
  • 基于ReAct框架的虚拟试穿技术优化与电商实践
  • 2026降AI最有效方法:知网/Turnitin ai率怎么降?论文降ai这样做通过率100%
  • 游戏角色技能系统设计:从战士到法师的平衡性实现
  • 14、Reader的源码、FilterReader源码、PushbackReader源码(windows操作系统,JDK8)
  • 2026 年高港专业的激波吹灰器公司哪个好,你家锅炉悄悄清灰的“隐形高手”,竟让能耗连降两成? - 行业推荐【认证官】
  • 2026优选:酒店布草直销工厂推荐标准与深度解析 - 装修教育财税推荐2026
  • 端侧推理崛起:云端模型服务的护城河在缩小吗
  • 2026年AI智习室合作指南:三个可量化标准帮你避开“伪智能”陷阱
  • 从 Loop 到 Graph:一次 Agent 架构的进化,以及 LangGraph 内核里藏着的那台状态机
  • GPU算力环境搭建与优化:从驱动安装到多卡扩展实战
  • Argo全家桶实战:构建从事件驱动到渐进式交付的云原生自动化闭环
  • 2026年AI编程新范式:从Copilot到Agentic Coding的实战指南
  • WebAssembly 在 AI:WASI 和边缘推理会改变部署形态吗
  • AI模型更新实战:Opus 5与Codex语音模式迁移指南
  • League Akari终极指南:英雄联盟智能助手全功能解析
  • 评测全网10款主流降AI率网站:一键锁定高效助手!
  • LuLu防火墙:macOS免费开源防火墙的完整使用指南
  • AI 产品的技术可行性评估——如何判断一个 AI 需求是否值得投入
  • 高校机房管理系统开发:SpringBoot+Vue+Node.js实践
  • STM32标准库PWM驱动直流电机:从硬件连接到代码实现
  • 告别C盘爆满焦虑:用FreeMove智能迁移文件夹的3个关键决策
  • Palworld存档转换工具终极指南:轻松备份、修复和管理你的游戏进度
  • 大语言模型输出头详解:语言建模、条件生成与价值评估
  • 3步告别网盘限速:LinkSwift高速下载实战指南
  • 单片机数码管驱动:三极管电路原理与动态扫描编程实战