全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

C++如何向函数传递数组?(代码示例)

C++中数组不能直接按值传递,需用指针+显式长度、std::array、std::vector或模板推导等方式;指针+长度最通用,兼容C风格,需传首地址和元素个数。

在C++中,数组不能直接按值传递给函数(会退化为指针),但有多种安全、清晰的方式实现“传数组”的效果。关键在于明确数组大小和生命周期,避免裸指针陷阱。

用指针 + 显式长度(最通用,兼容C风格)

这是最基础也最灵活的方式,适用于动态分配或已知大小的数组。函数接收指向首元素的指针和元素个数。

void printArray(int* arr, size_t len) {
    for (size_t i = 0; i < len; ++i) {
        std::cout << arr[i] << " ";
    }
    std::cout << "\n";
}

int main() { int data[] = {1, 2, 3, 4, 5}; printArray(data, std::size(data)); // C++17起可用std::size;否则写sizeof(data)/sizeof(data[0]) }

用引用传递定长数组(类型安全,推荐用于编译期确定大小)

通过模板或显式长度声明数组引用,编译器能检查大小,不会退化,且不拷贝数据。

template
void processArray(int (&arr)[N]) {
    std::cout << "Size: " << N << "\n";
    for (int x : arr) std::cout << x << " ";
}

// 或非模板写法(仅适用于固定大小,如5) void handleFiveInts(int (&arr)[5]) { // 只接受恰好5个int的数组 }

用 std::array(现代C++首选,值语义+大小内建)

std::array 是栈上容器,保留大小信息,可按值或引用传递,支持范围for、size()等,无额外开销。

#include 
void foo(const std::array& arr) { // 推荐const引用避免拷贝
    std::cout << "Size: " << arr.size() << "\n";
    for (int x : arr) std::cout << x << " ";
}

int main() { std::array a = {10, 20, 30, 40, 50}; foo(a); }

用 std::vector(适合运行时大小不确定或需扩容)

当数组大小在运行时决定,或需要增删元素时,std::vector 是自然选择。传 const 引用避免不必要的拷贝。

#include 
void sumVector(const std::vector& vec) {
    int s = 0;
    for (int x : vec) s += x;
    std::cout << "Sum: " << s << "\n";
}

int main() { std::vector v = {1, 2, 3, 4, 5}; sumVector(v); }

不推荐裸指针不带长度、也不建议按值传递原始数组(语法错误)。优先选 std::array 或 std::vector,兼顾安全与表达力。


# c++  # Array  # for  # const  # 指针  #   # 值传递  # 引用传递  # 适用于  # 这是  # 定长  # 也不  # 自然选择  # 不确定  # 不带  # 内建  # 可按  # 关键在于 


相关文章: 专业商城网站制作公司有哪些,pi商城官网是哪个?  制作网站的模板软件,网站怎么建设?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  如何在Ubuntu系统下快速搭建WordPress个人网站?  实例解析Array和String方法  建站之星安装步骤有哪些常见问题?  巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成  ,sp开头的版面叫什么?  如何通过智能用户系统一键生成高效建站方案?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  建站之星安装需要哪些步骤及注意事项?  如何在橙子建站上传落地页?操作指南详解  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  如何高效配置IIS服务器搭建网站?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  小型网站制作HTML,*游戏网站怎么搭建?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  北京制作网站的公司,北京铁路集团官方网站?  详解jQuery停止动画——stop()方法的使用  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  c# 在ASP.NET Core中管理和取消后台任务  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  建站之星CMS建站配置指南:模板选择与SEO优化技巧  高防服务器租用如何选择配置与防御等级?  利用JavaScript实现拖拽改变元素大小  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  建站主机类型有哪些?如何正确选型  存储型VPS适合搭建中小型网站吗?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  如何快速搭建高效服务器建站系统?  小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?  如何批量查询域名的建站时间记录?  外汇网站制作流程,如何在工商银行网站上做外汇买卖?  如何制作算命网站,怎么注册算命网站?  如何在服务器上三步完成建站并提升流量?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  C#如何使用XPathNavigator高效查询XML  焦点电影公司作品,电影焦点结局是什么?  天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?  沈阳制作网站公司排名,沈阳装饰协会官方网站?  湖州网站制作公司有哪些,浙江中蓝新能源公司官网?  如何快速生成可下载的建站源码工具?  Python文件管理规范_工程实践说明【指导】  宝塔建站无法访问?如何排查配置与端口问题?  Bpmn 2.0的XML文件怎么画流程图  如何注册花生壳免费域名并搭建个人网站?  Android滚轮选择时间控件使用详解  如何在万网自助建站平台快速创建网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。