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;
}