如何解决C ++将数组传递给函数而不复制
例如,我是C / C ++的新手,我想知道将数组传递给函数而不进行复制的正确方法是什么,例如:
select from_unixtime(unix_timestamp('19-Aug-2020 10:05:40','dd-MMM-yyyy hh:mm:ss'),'yyyy-MM-dd hh:mm:ss') as timestamp1,from_unixtime(unix_timestamp('19-Aug-2020 14:05:40','yyyy-MM-dd hh:mm:ss') as timestamp2;
这种方法正确吗?将数组传递给someFunction()时,数组是否会复制?
解决方法
您混淆了一些术语。您没有传递数组,而是传递对已分配数据的引用。数组的大小需要固定,因此您将无法动态分配它们( 编辑:,这意味着您不能在不通过编译时间知道大小的情况下就将它们分配到堆栈上)。这里更简单的方法是更改函数的签名以接受指针
void someFunction(uint8_t *array) { /* ... */ }
然后按值传递指针
someFunction(array);
我还建议您使用专为在C ++中分配此类数据而设计的new
和delete[]
运算符,但这不是必需的问题。
编辑:
当然,一种更安全的方法是对动态长度数据使用std::vector
类,对静态长度数据使用std::array
类。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。