C++ 如何使用*&;传递数组;在C++;

C++ 如何使用*&;传递数组;在C++;,c++,arrays,function,memory,reference,C++,Arrays,Function,Memory,Reference,我阅读并使用它,但我有一个小问题: 当我将以下格式放入原型中时: void mmyfunc(int *& myArray) { //implementation } 1.如果我将数组传递给它,如何调用它?因为我得到: no matching function for call to 2.当我使用以下实现时: void NetworkSocket::resizeArray (int *&orig, int index, int size) { int *resize

我阅读并使用它,但我有一个小问题: 当我将以下格式放入原型中时:

void mmyfunc(int *& myArray)
{
 //implementation
}
1.如果我将数组传递给它,如何调用它?因为我得到:

no matching function for call to 
2.当我使用以下实现时:

void NetworkSocket::resizeArray (int *&orig, int index, int size)
{
    int *resized =  new  int[size];
    for (int i = 0; i < size; i++)
    {
        if ( i == index )
            i++;

        resized[i] = orig[i];
    }
    delete [] orig;
    orig = (int *)new int[size];
    orig = resized;
}
void NetworkSocket::resizeArray(int*&orig,int索引,int大小)
{
int*调整大小=新int[大小];
对于(int i=0;i

我在delete[]行中发现了seg错误。

我将假定您的意思是数组

int x[16];
将函数调用为

resizeArray (x, ...)
所以
delete[]
-显式地删除它会导致未定义的行为,因为它没有分配
new[]
。此外,
x
驻留在自动内存中,因此它会自行清理。此外,您不能重新分配数组数组不是指针。当作为参数传递时,它们会衰减为指针

如果将数组声明为


那么你的方法就行了。但还不完全是C++。 您只需使用
std::vector
resize()
。不要重新发明轮子(除非这是一项任务)

编辑:刚刚发现这个:

orig = (int *)new int[size];
orig = resized;
会漏。删除额外的
新[]

编辑2:

什么事

if ( i == index )
        i++;

应该怎么做?

如何向其传递“数组”?而且,这段代码到处都是漏洞和故障:为什么要不厌其烦地惹上额外的麻烦呢?使用
std::vector
。您遗漏了代码中最重要的部分。。。你怎么称呼它。我本来会把
向量
的建议放在第一位,但那只是我。@Etienedemartel可能是出于教育目的。“那么你的方法就行了”。。。一般做法是肯定的,但不是当前的实施。
if ( i == index )
        i++;