Я немного тренируюсь в программировании C. Одна из задач - объединить два динамических массива.Элементы второго массива должны быть добавлены в конец первого массива.Дано следующее:
void concatArrays(int* numbers1, int length1, int* numbers2, int length2)
{
//code
}
И это мой код для решения задачи:
#include <stdio.h>
#include <stdlib.h>
void concatArrays(int* numbers1, int length1, int* numbers2, int length2)
{
numbers1 = (int*)realloc(numbers1, sizeof(int*) * (length1 + length2));
for (int count = 0; count < length2; count++)
{
numbers1[length1 + count] = numbers2[count];
}
}
int main()
{
int* num = (int*)malloc(sizeof(int*) * 6);
num[0] = 1;
num[1] = 2;
num[2] = 3;
num[3] = 4;
num[4] = 5;
num[5] = 6;
int* numbers = (int*)malloc(sizeof(int*) * 4);
numbers[0] = 1;
numbers[1] = 2;
numbers[2] = 3;
numbers[3] = 4;
concatArrays(num, 6, numbers, 4);
for (int count = 0; count < 10; count++)
{
printf("%d - ", num[count]);
}
return 0;
}
К сожалению, это не работает.Я знаю, что код работает, если я использовал указатель на указатель:
void concatArrays(int** numbers1, int length1, int** numbers2, int length2) { //code }
Тем не менее, это, кажется, недопустимо в отношении требований задачи.
Есть ли у вас какие-либо идеи?как я могу изменить свой код, отвечающий требованиям для решения задачи?
Заранее спасибо.
Редактировать:
Я забыл:
Вывод: 1 - 2 - 3 - 4 - 5 - 6 - 2054454589 - 32767 - -1280384664 - 32767 -