传入并修改函数中的数组

时间:2014-07-12 21:12:29

标签: c++ arrays pointers

我一直在查看其他帖子,并尝试让它工作一段时间,但似乎无法管理它。

基本上我想将一个“char myArray [10]”传递给一个函数,让函数赋值,然后再将它传回去。目前通常看起来像这样:

int MyClass::GetArray(char array[10])
{   
    char p[10];
    ... // a value is assigned to p
    memcpy(&array, &p, sizeof(p)); // Here array ends up being 0x3232323232323232 <Error reading characters of string.>

    return 0;
}

跟:

    char array[10];
    myclass.GetArray(array);

所以,我假设我需要传递数组作为对调用函数之前创建的数组[10]的引用。但是,为此,我不确定如何创建一个指向固定数组的指针,而不是使它成为通用的char *指针或指向字符数组的指针。

其次是memcpy错误(在上面的代码注释中)。我不确定这是否相关。

1 个答案:

答案 0 :(得分:1)

然后,当你将一个数组传递给一个函数时,它会衰减到一个指针。因此,当您在函数中使用&上的address-of运算符array时,您将获取指针的地址,这意味着您将获得指向指针的指针。

顺便说一下,这会导致undefined behavior

除此之外一切都还好,你不必通过引用传递数组(或更确切地说,指针)。它不是很...... C ++ - ish。 :)