C++ 收集2 : error: ld returned 1 exit status

标签 c++ arrays pointers

我尝试编写一个程序将数据插入到数组中,我想使用指针来执行此操作,以便我可以创建一个新数组并使用指针简单地指向它。但我遇到了一个错误,其他问题也没有帮助。 代码:

#include <iostream>
using namespace std;

bool insert(int arr[], int size, int elem, int pos);

int main()
{
    // Create a array
    int arrayData[] = {0, 3, 4, 3};
    int *arrptr = arrayData;

    int size = sizeof(arrayData) / sizeof(*arrayData);

    int elem = 6, pos = 3;

    // insert the element to position pos
    insert(arrptr, size, elem, pos);

    return 0;
}

bool insert(int *arr[], int size, int elem, int pos)
{
    int newArray[size + 1];
    for (int i = 0; i < size + 1; i++)
    {
        if (i < pos)
        {
            newArray[i] = *arr[i];
        }
        else if (i == pos)
        {
            newArray[i] = elem;
        }
        else
        {
            newArray[i] = *arr[i - 1];
        }
    }
    *arr = newArray;
    return true;
}

错误:

/tmp/ccwuU0I9.o: In function `main':
arrayInsertion.cpp:(.text+0x61): undefined reference to `insert(int*, int, int, int)'
collect2: error: ld returned 1 exit status

最佳答案

这两个声明

bool insert(int arr[], int size, int elem, int pos);
            ^^^^^^^^

bool insert(int *arr[], int size, int elem, int pos)
            ^^^^^^^^^

不同。

还有可变长度数组

int newArray[size + 1];

不是标准 C++ 功能。

还有这个声明

*arr = newArray;

没有意义,因为变量 arr 是函数的局部变量。它的改变不会影响传递的参数。

您最初必须动态分配源数组。

如果给定位置大于初始数组的当前大小,则数组将被扩大,而不添加新值。

关于C++ 收集2 : error: ld returned 1 exit status,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59694314/

相关文章:

c++ - 公开集合的有效替代方案

c++ - Gotw 67 中的一个例子

c++ - 一个简单的 cout 进度条的设计在 C++ 结束时立即从 0->100%

javascript - Nodejs 中变量作用域的误解

c - 函数调用中指向 const 的指针

c++ - 类中的 vector (没有类类型)

arrays - 如何使用 Django 在 HTML post 请求中发送数组

javascript - PHP 和 JS 中 cookie 数组的最佳性能选择?

c - 说当我将一个项目放在数组的开头时出现段错误

c - C 中转换为 (char*) 和 *(char**) 的区别(实现 malloc)