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

C++二维数组与字符数组实战指南

一、二维数组(表格 / 矩阵结构)

1. 概念

一维数组:一组线性数据二维数组:数组的数组,可以理解成多行多列表格下标规则:数组名[行下标][列下标]下标均从 0 开始

2. 定义与初始化

// 1. 标准完整初始化(推荐,可读性高) int arr[2][3] = { {1, 2, 3}, // 第0行 {4, 5, 6} // 第1行 }; // 2. 简写初始化(不推荐,可读性差) int arr[2][3] = {1,2,3,4,5,6}; // 3. 部分初始化,未赋值元素默认为0 int arr[2][3] = {{1}, {4}}; // 4. 省略行数,不可省略列数 int arr[][3] = {1,2,3,4,5,6};

3. 访问元素

cpp

运行

// 访问第0行第2列 cout << arr[0][2]; // 输出 3

4. 遍历(双层 for 循环)

外层循环控制行,内层循环控制列:

#include <iostream> using namespace std; int main() { int arr[2][3] = { {1, 2, 3}, {4, 5, 6} }; // 遍历二维数组 for (int i = 0; i < 2; i++) { // 遍历行 for (int j = 0; j < 3; j++) { // 遍历列 cout << arr[i][j] << "\t"; } cout << endl; } system("pause"); return 0; }

运行结果:

plaintext

1 2 3 4 5 6 请按任意键继续...

5. 通用求行列数

int totalBytes = sizeof(arr); // 数组总字节数 int rowBytes = sizeof(arr[0]); // 一行的字节数 int rows = totalBytes / rowBytes; // 行数 int cols = rowBytes / sizeof(int); // 列数

二、字符数组(C 风格字符串)

1. 概念

C++ 中早期字符串实现:\0(结束符)结尾的字符数组\0是字符串结束标志,cout输出时遇到\0停止。

2. 定义方式

// 方式1:直接用字符串常量(自动补 \0) char str1[] = "hello"; // 方式2:逐个字符定义(必须手动加 \0) char str2[] = {'h','e','l','l','o','\0'};

3. 输入与输出

char str[20]; cout << "请输入字符串:"; cin >> str; // 输入(不能含空格,空格会截断) cout << "你输入的是:" << str << endl;

4. 注意事项

  • 字符数组长度要预留 1 字节给\0
  • 没有\0会输出乱码
  • 不能直接用=给字符数组赋值

三、实战案例

案例 1:二维数组求所有元素和

int arr[2][3] = {{1,2,3},{4,5,6}}; int sum = 0; for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { sum += arr[i][j]; } } cout << "总和:" << sum << endl; // 21

案例 2:简单字符数组使用

char str[] = "test123"; cout << "字符串:" << str << endl; cout << "第2个字符:" << str[1] << endl; // e

四、高频易错点

  1. 二维数组下标越界、行列下标写反
  2. 循环条件写成i <= rows导致越界
  3. 字符数组缺少\0出现乱码
  4. 直接用=对数组整体赋值(语法错误)
  5. cin读取带空格字符串被截断

五、今日重点总结

  1. 二维数组适合表格 / 矩阵数据,用双层 for 循环遍历
  2. 下标从 0 开始,严禁越界访问
  3. 字符数组必须以\0结尾才是合法字符串
  4. 数组不能整体赋值,只能逐个元素操作
  5. 求行列长度用sizeof通用计算,代码更健壮
http://www.jsqmd.com/news/628207/

相关文章:

  • Jenkins实战:从持续集成到自动化部署的完整指南
  • 2026年上海口碑好的给水管制造商排名,提供定制生产服务 - myqiye
  • FigmaCN:3分钟让Figma界面说中文的终极解决方案
  • 掌握SIMD并行计算:AVX/AVX2内在函数实战指南
  • Windows 7终极兼容方案:让Blender 3.x在经典系统上完美运行
  • 游戏画质优化新利器:如何用DLSS Swapper一键管理多游戏DLSS版本
  • Obsidian Excel插件:在笔记中创建和管理电子表格的完整指南
  • 终极Windows与Office激活指南:3分钟掌握KMS_VL_ALL_AIO智能解决方案
  • 7步征服Windows 11部署:从技术障碍到流畅安装的完整攻略
  • Asian Beauty Z-Image Turbo 多风格融合展示:从写实到二次元的无缝转换
  • 手把手教程:用Ollama一键部署translategemma-27b-it,实现图片翻译自由
  • 键盘重映射的终极解决方案:SharpKeys如何通过系统级注册表修改实现零延迟按键定制
  • 2026年日照口碑好的搬家服务公司盘点,大型设备搬运吊装哪家强 - mypinpai
  • AppleRa1n终极指南:5分钟绕过iOS 15-16激活锁的免费解决方案
  • 5步完整指南:LRCGET批量歌词下载解决方案
  • 破局双检困境:Paperxie 如何用技术重构论文原创性,让查重与 AIGC 率双达标
  • Ollama部署Granite-4.0-H-350M避坑指南:常见问题与解决方案
  • TikTok评论数据采集工具:零基础3步获取完整互动数据
  • 基于Phi-4-mini-reasoning的智能数据处理:VLOOKUP跨表匹配逻辑自动化实现
  • 暗黑3技能自动化:从手动挣扎到智能操控的技术跃迁
  • 哈希表实战:从原理到手写实现
  • 前端性能优化:从加载速度到渲染性能的全面突破
  • 如何使用 PvZ Toolkit:植物大战僵尸修改工具终极指南
  • OBS-VST深度解析:如何在OBS Studio中实现专业级音频处理
  • 网盘直链下载助手终极指南:八大网盘真实链接一键获取,轻松告别下载限速
  • 解锁全平台游戏控制:GlosSI让Steam手柄畅玩任何游戏
  • 【CTF】【二进制分析】深入解析JPG文件结构:从段标识到霍夫曼编码
  • 3分钟快速上手:免费开源的多平台资源下载神器res-downloader终极指南
  • VideoDownloadHelper深度解析:网页视频下载的技术实现与实战应用
  • Qwen-Image-Edit-2511多人合影换装:保持比例,统一风格