«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как вернуть массив из функции в C++?

Как вернуть массив из функции в C++?

Опубликовано 22 декабря 2024 г.
Просматривать:132

How to Return an Array from a Function in C  ?

Возврат массивов из функции в C

Вы можете вернуть массив из функции в 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