【发布时间】:2021-02-07 22:57:24
【问题描述】:
我想在 C++ 数组中再添加一个值,我有这段代码:
void print_array(int *array, int size)
{
for (int i = 0; i < size; ++i)
{
std::cout << array[i] << ' ';
}
std::cout << '\n';
}
void add_to_array(int *array, int size, int value)
{
int *newArr = new int[size + 1];
memcpy(newArr, array, size * sizeof(int));
delete[] array;
array = newArr;
array[size + 1] = value;
}
int main(int argc, char const *argv[])
{
int *array = new int[10];
array[0] = 0;
array[1] = 1;
array[2] = 2;
array[3] = 3;
array[4] = 4;
array[5] = 5;
array[6] = 6;
array[7] = 7;
array[8] = 8;
array[9] = 9;
print_array(array, 10);
add_to_array(array, 10, 11);
print_array(array, 11);
}
我运行它时没有收到任何错误,但输出非常奇怪:
0 1 2 3 4 5 6 7 8 9
0 0 -307888112 32767 4 5 6 7 8 9 1041
任何想法我该如何正确地做到这一点?
我知道 stl 列表中的向量,但我不能使用它们,所以不建议这样做
【问题讨论】:
-
宁可使用
std::vector<int> array(10);和push_back()在末尾添加元素。