Вы можете вернуть массив из функции в C, используя указатели. Однако это может привести к проблемам, если массив выделен неправильно.
В вашем примере вы пытаетесь вернуть массив, выделенный в стеке. Это может привести к неопределенному поведению при возврате функции.
Чтобы избежать этой проблемы, вы можете выделить массив в куче с помощью нового оператора. Затем вы можете вернуть указатель на выделенный массив.
int* uni(int *a, int *b) {
int *c = new int[10];
int i = 0;
while (a[i] != -1) {
c[i] = a[i];
i ;
}
for (; i Затем вы можете использовать возвращенный указатель для доступа к массиву.
int main() {
int a[10] = {1, 3, 3, 8, 4, -1, -1, -1, -1, -1};
int b[5] = {1, 3, 4, 3, 0};
int *c = uni(a, b);
for (int i = 0; i Это выведет:
1 3 3 8 4 1 3 4 3 0
Другой альтернативой является использование структуры для переноса массива. Его можно вернуть по значению, и структура будет скопирована, включая внутренний массив.
struct myArray {
int array[10];
};
myArray uni(int *a, int *b) {
myArray c;
int i = 0;
while (a[i] != -1) {
c.array[i] = a[i];
i ;
}
for (; i Это также выведет:
1 3 3 8 4 1 3 4 3 0
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3