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