<p>数组名作为参数传递时退化为指向首元素的指针,可通过指针形参接收并操作数组,如void printArray(int* arr, int size)实现遍历。</p>

在C++中,数组不能直接作为参数整体传递给函数,但可以通过指针来实现数组的传递。实际上,当数组名作为参数传递时,它会自动退化为指向第一个元素的指针。利用这一点,我们可以高效地在函数间共享和操作数组数据。
定义函数时,形参可以是指针类型,用来接收传入的数组首地址:
void printArray(int* arr, int size) {
for (int i = 0; i < size; ++i) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
}
调用时传入数组名即可:
int data[] = {1, 2, 3, 4, 5};
printArray(data, 5); // 输出: 1 2 3 4 5
这里 data 是数组名,表示首元素地址,等价于 &data[0],与形参 int* arr 匹配。
立即学习“C++免费学习笔记(深入)”;
也可以用数组形式写形参,但这只是语法糖,编译后仍是指针:
void modifyArray(int arr[], int size) {
for (int i = 0; i < size; ++i) {
arr[i] *= 2;
}
}
调用方式不变:
int values[] = {1, 2, 3};
modifyArray(values, 3); // values 变为 {2, 4, 6}
arr[] 看似是数组,实则是 int* 类型,无法通过 sizeof 获取数组长度。
对于二维数组,必须指定除第一维外的所有维度大小:
void processMatrix(int (*matrix)[3], int rows) {
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < 3; ++j) {
std::cout << matrix[i][j] << " ";
}
std::cout << std::endl;
}
}
调用示例:
int grid[2][3] = {{1, 2, 3}, {4, 5, 6}};
processMatrix(grid, 2);
matrix 是指向含有3个int元素的一维数组的指针,这样才能正确计算每一行的地址偏移。
基本上就这些。只要理解数组名即地址、函数传参退化为指针这一机制,就能灵活使用指针完成数组传递。注意手动传入数组长度,避免越界访问。不复杂但容易忽略细节。
以上就是C++如何使用指针实现数组传递的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号