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

c++之数组

目录

C++数组基础概念

数组常见操作

二维数组定义与初始化

二维数组遍历方法

二维数组与函数


C++数组基础概念

数组是C++中用于存储相同类型元素的连续内存结构。通过索引访问元素,索引从0开始。数组大小必须在编译时确定,属于静态数据结构。

#include <iostream>
using namespace std;int main() {int arr[5] = {1, 2, 3, 4, 5};for(int i = 0; i < 5; i++) {cout << "Element at index " << i << ": " << arr[i] << endl;}return 0;
}

数组初始化时可以省略大小,编译器会自动计算元素数量。未初始化的元素默认值为0。

#include <iostream>
using namespace std;int main() {double arr[] = {1.1, 2.2, 3.3};cout << "Size of array: " << sizeof(arr)/sizeof(arr[0]) << endl;for(auto num : arr) {cout << num << " ";}return 0;
}

数组常见操作

数组遍历可以使用传统for循环或基于范围的for循环。基于范围的循环更简洁但无法获取索引。

#include <iostream>
using namespace std;int main() {char letters[5] = {'A', 'B', 'C', 'D', 'E'};for(int i = 0; i < 5; i++) {letters[i] += 32;}for(char c : letters) {cout << c << " ";}return 0;
}

数组作为函数参数传递时,实际上传递的是指针。函数内对数组的修改会影响原数组。

#include <iostream>
using namespace std;void modifyArray(int arr[], int size) {for(int i = 0; i < size; i++) {arr[i] *= 2;}
}int main() {int nums[3] = {10, 20, 30};modifyArray(nums, 3);for(int num : nums) {cout << num << " ";}return 0;
}

二维数组定义与初始化

二维数组可以看作数组的数组,常用于表示矩阵或表格数据。内存布局仍然是连续的。

#include <iostream>
using namespace std;int main() {int matrix[2][3] = {{1, 2, 3},{4, 5, 6}};cout << "Element at [1][2]: " << matrix[1][2] << endl;return 0;
}

二维数组初始化时可以省略第一维大小,但不能省略第二维大小。

#include <iostream>
using namespace std;int main() {int grid[][4] = {{1, 2, 3, 4},{5, 6, 7, 8}};for(int i = 0; i < 2; i++) {for(int j = 0; j < 4; j++) {cout << grid[i][j] << " ";}cout << endl;}return 0;
}

二维数组遍历方法

嵌套循环是遍历二维数组的常用方法。外层循环控制行,内层循环控制列。

#include <iostream>
using namespace std;int main() {double scores[3][2] = {{85.5, 90.0},{78.5, 88.0},{92.5, 95.0}};for(int row = 0; row < 3; row++) {for(int col = 0; col < 2; col++) {cout << scores[row][col] << "\t";}cout << endl;}return 0;
}

使用指针也可以遍历二维数组,需要注意指针运算的方式。

#include <iostream>
using namespace std;int main() {int arr[2][3] = {1, 2, 3, 4, 5, 6};int *ptr = &arr[0][0];for(int i = 0; i < 6; i++) {cout << *(ptr + i) << " ";}return 0;
}

二维数组与函数

传递二维数组给函数时,必须指定第二维的大小。函数参数可以写成数组形式或指针形式。

#include <iostream>
using namespace std;void printMatrix(int arr[][3], int rows) {for(int i = 0; i < rows; i++) {for(int j = 0; j < 3; j++) {cout << arr[i][j] << " ";}cout << endl;}
}int main() {int mat[2][3] = {{1, 2, 3}, {4, 5, 6}};printMatrix(mat, 2);return 0;
}

使用指针传递二维数组需要更复杂的指针类型。这种方法更灵活但可读性较差。

#include <iostream>
using namespace std;void processMatrix(int (*arr)[4], int rows) {for(int i = 0; i < rows; i++) {for(int j = 0; j < 4; j++) {arr[i][j] += 10;}}
}int main() {int data[3][4] = {{1, 2, 3, 4},{5, 6, 7, 8},{9, 10, 11, 12}};processMatrix(data, 3);printMatrix(data, 3);return 0;
}

http://www.xdnf.cn/news/759637.html

相关文章:

  • latex 三线表-算法对比表
  • 理解解释器架构:原理、组成与运行机制全解析
  • leetcode hot100 二叉树(一)
  • c++之分支
  • SOC-ESP32S3部分:24-WiFi配网
  • 【PyQt5】从零开始的PyQt5 - QLabel篇
  • 18. Qt系统相关:多线程
  • Matlab作图之 subplot
  • 抖音客户端训练营--day2
  • 一:UML类图
  • JMeter 直连数据库
  • 1Remote远程会话管理以及一键启动虚拟机
  • Spring 中 @Value 注解多实例配置方案详解
  • 看问题的本质背后是什么?
  • pycharm打印时不换行,方便对比观察
  • Vue3.5 企业级管理系统实战(二十一):菜单权限
  • 前端面经 两栏布局
  • 远程管理SSH服务的搭建
  • 论文略读:Uncertainty-Aware Graph Structure Learning
  • 开源版 PyMOL 如何绘制 新冠病毒 分子结构?
  • Vue单文件组件
  • 打卡day42
  • 【Netty】EventLoopGroup
  • waitpid的waitstatus 含义源码解读
  • Linux 内核中 skb_orphan 的深度解析:从版本差异到核心机制
  • JOIN使用的注意事项
  • HTTP协议解析
  • 话题通信之python实现
  • 【免杀】C2免杀技术(十三)Inline Hook 概念篇
  • C# winform 教程(一)