首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从函数参数[C++]复制整数数组

从函数参数[C++]复制整数数组
EN

Stack Overflow用户
提问于 2020-01-03 07:17:27
回答 2查看 90关注 0票数 0

我有一个C++函数,它是这样启动的

代码语言:javascript
复制
void findSolutions(vector<MOVE> & solutions, int board[], int maxPegs){
    int newboard[18];
    copy(begin(board), end(board), begin(newboard));
    ...
    more code
    ...
}

我试图将参数" board“复制到一个临时的int数组中,这样我就不会直接修改原始板。但是在copy()中,我从VSCode得到以下错误

代码语言:javascript
复制
no instance of overloaded function "begin" matches the argument list -- argument types are: (int *)

如何复制从参数传入的数组?谢谢

EN

Stack Overflow用户

发布于 2020-01-03 07:42:15

您不能安全地执行此操作。当传递给函数时,数组会衰减为指针。您将无法确保源数组有足够的字节可供读取(除非应用程序很简单,并且您知道调用者端发生了什么)。如果您将数组作为第一个元素的指针传递,则您也要负责传递数组的长度。假设boardLen板中的int数量,您可以执行以下操作:

代码语言:javascript
复制
void findSolutions(vector<MOVE> & solutions, int board[], size_t boardLen, int maxPegs){
    int newboard[18];
    memcpy(newboard, board, min(sizeof(newboard), boardLen*sizeof(int));
    ...

memcpy一次复制一个字节,因此是boardLen*sizeof(int)

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59571235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档