C++ C++;将数组传递给函数而不复制

C++ C++;将数组传递给函数而不复制,c++,arrays,c,pointers,C++,Arrays,C,Pointers,我是C/C++新手,我想知道在不复制的情况下将数组传递给函数的正确方法,例如: void someFunction(uint8_t &array) { // some work here } int main() { uint8_t *array = (uint8_t*) malloc(sizeOf(uint8_t) * 100); someFunction(*array); } 这种方法正确吗?当我将数组传递给someFunction()时,数组是否会复制?

我是C/C++新手,我想知道在不复制的情况下将数组传递给函数的正确方法,例如:

void someFunction(uint8_t &array) {
    // some work here
}

int main() {
    uint8_t *array = (uint8_t*) malloc(sizeOf(uint8_t) * 100);
    someFunction(*array);
}

这种方法正确吗?当我将数组传递给someFunction()时,数组是否会复制?

您混淆了一些术语。您不是在传递数组,而是在传递对已分配数据的引用。数组的大小需要固定,因此您将无法动态分配它们(编辑:),这意味着您无法在编译时不知道大小的情况下在堆栈上分配它们。这里更简单的方法是更改函数的签名以接受指针

void someFunction(uint8_t *array) { /* ... */ }
然后按值传递指针

someFunction(array);
<>我也建议您使用C++中的<代码>新< /COD>和Dele[]/Cuff>运算符,这些代码是在C++中分配的,但这不是必须的。 编辑:
当然,更安全的方法是对动态长度数据使用
std::vector
类,对静态长度数据使用
std::array
类。

1)没有C/C++这样的语言。你使用的是,很明显的C++(因为你不能用C编译器编译这样的代码)2)你认为什么,通过代码> UTI8*T**/CODE >函数将复制数组?你知道通过副本传递数组的方法吗?在你的例子中没有数组。你使用指针。@ EasyY-PyZy。我只是想知道它是正确的方式,因为我是C++中的C++新手,如果你想要静态大小的数组,你会使用<代码> STD::数组< /C>,如果你想使用动态大小数组,你可以使用<代码> STD::vector < /C> >,并引用那些。@ EasyY-PyZyy代码> int x(10);<代码>这是一个数组。如果你想知道如何通过,那么C++除了<代码> C < /> >之外还有其他的答案。“数组需要固定大小,这样你就不能动态地分配它们”不清楚你的意思。可以动态分配阵列。另外,使用
new
的建议至少应附带
std::vector
std::array
的提示。在现代C++原代码>新的< /代码>中avoided@idclev463035818因为他是C++新手,我不想在这个答案中加太多的信息,但我可以根据你的批评来调整。