C++ – 将一维数组/二维数组/三维数组作为函数参数传递给函数
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:C++ – 将一维数组/二维数组/三维数组作为函数参数传递给函数
原文链接:https://www.stubbornhuang.com/1928/
发布于:2022年01月25日 15:12:32
修改于:2022年01月25日 15:29:22
在本文中将详细说明如何将一维数组、二维数组、三维数组作为函数参数传递给函数进行处理。
在C++中,一维数组可以理解为包含n个数字的内存块,例如int a[3]表示数组a为包含3个int类型数字的内存块;
二维数组可以理解以一维数组为元素的一维数组,例如2行3列的二维数组可以理解为两个元素的一维数组,其中每个元素为包含3个元素的一维数组;
三维数组可以理解为以二维数组为元素的一维数组,例如2个2行3列的三维数组可以理解为两个元素的一维数组,其中每个元素为2行3列的二维数组;
将数组作为函数参数传递,最好的方式就是传递数组指针,即指向数组首个元素内存的指针,再加上可以表示数组维度或者长度的已知参数。
1 将一维数组作为函数参数传递给函数
下列代码展示例如如何将一维数组作为函数参数传递给函数,其中传递了两个行参,第一个形参为一维数组的长度,最后一个形参为数组指针。
#include <iostream>
void Print_1D_Array(int array_length, int* array)
{
for (int i = 0; i < array_length; ++i)
{
std::cout << array[i] << ",";
}
std::cout << std::endl;
}
int main()
{
std::cout << "一维数组传递" << std::endl;
int array_1D[3] = { 1,2,3 };
Print_1D_Array(3, array_1D);
}
2 将二维数组作为函数参数传递给函数
下列代码展示例如如何将二维数组作为函数参数传递给函数,其中传递了三个行参,第一个形参为二维数组的行数,第二个形参为二维数组的列数,最后一个形参为数组指针。
#include <iostream>
void Print_2D_Array(int rows, int cols, int* array)
{
for (int i = 0; i < rows; ++i)
{
for (int j = 0; j < cols; ++j)
{
std::cout << array[i * cols + j]<<",";
}
std::cout << std::endl;
}
}
int main()
{
std::cout << "二维数组传递" << std::endl;
int array_2D [][3] = {
{1, 2, 3},
{4, 5, 6}
};
Print_2D_Array(2, 3, array_2D[0]);
}
3 将三维数组作为函数参数传递给函数
下列代码展示例如如何将三维数组作为函数参数传递给函数,其中传递了四个行参,第一个行参为三维数组的第三维度的数量,第二个形参为二维数组的行数,第三个形参为二维数组的列数,最后一个形参为数组指针。
#include <iostream>
void Print_3D_Array(int num,int rows, int cols, int* array)
{
for (int i = 0; i < num; ++i)
{
for (int j = 0; j < rows; ++j)
{
for (int k = 0; k < cols; ++k)
{
std::cout << array[i * rows * cols + j * cols + k] << ",";
}
std::cout << std::endl;
}
}
}
int main()
{
std::cout << "三维数组传递" << std::endl;
int array_3D [][2][3] = {
{
{1, 2, 3},
{4, 5, 6}
},
{
{7, 8, 9},
{10, 11, 12}
}
};
Print_3D_Array(2, 2, 3, array_3D[0][0]);
}
当前分类随机文章推荐
- C++ - RAII机制 阅读362次,点赞0次
- C++ - 对字符串和图片进行base64编解码 阅读320次,点赞0次
- C++11 - std::chrono - 使用std::chrono::duration_cast进行时间转换,hours/minutes/seconds/milliseconds/microseconds相互转换,以及自定义duration进行转换 阅读2259次,点赞0次
- C++11 - 构建一个符合实际应用要求的线程池 阅读1185次,点赞0次
- C++ - 数组初始化 阅读373次,点赞0次
- C++ - 字节数组byte[]或者unsigned char[]与long的相互转换 阅读947次,点赞0次
- C++ - 使用模板和智能指针构建一个双向链表工具类 阅读961次,点赞0次
- C++ – 字节数组byte[]或者unsigned char[]与long double的相互转换 阅读1098次,点赞0次
- C++11 - 使用std::chrono计算程序、函数运行时间 阅读2780次,点赞0次
- C++ - std::map - 存储动态指针时正确释放内存 阅读4260次,点赞1次
全站随机文章推荐
- C++读取Shp文件并将Shp转化为DXF 阅读3207次,点赞1次
- VPS - 使用XShell连接VPS 阅读3273次,点赞0次
- Visual Studio - 借助远程Linux服务器环境在Visual Studio中编写和远程调试Linux C++程序 阅读1185次,点赞0次
- 书籍翻译 - Cloth Simulation for Computer Graphics,Abstract中文翻译 阅读573次,点赞0次
- UnrealEngine4 - 将TextureRenderTarget2D保存为图片 阅读2117次,点赞0次
- 资源分享 - The HDRI Handbook- High Dynamic Range Imaging for Photographers and CG Artists英文高清PDF下载 阅读2551次,点赞0次
- 资源分享 - Essential Mathematics for Games and Interactive Applications(First Edition) 英文高清PDF下载 阅读1920次,点赞0次
- 深度学习 - 我的深度学习项目代码文件组织结构 阅读1392次,点赞3次
- 资源分享 - AI Game Programming Wisdom 4 英文高清PDF下载 阅读1392次,点赞0次
- 资源分享 - GPU Gems中文译文版GPU 精粹(1-3) 高清PDF下载 阅读8572次,点赞1次
评论
169