"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como retornar um array de uma função em C++?

Como retornar um array de uma função em C++?

Publicado em 2024-12-22
Navegar:775

How to Return an Array from a Function in C  ?

Retornando arrays de uma função em C

Você pode retornar um array de uma função em C usando ponteiros. No entanto, isso pode levar a problemas se a matriz não estiver alocada corretamente.

No seu exemplo, você está tentando retornar uma matriz que está alocada na pilha. Isso pode causar um comportamento indefinido quando a função retorna.

Para evitar esse problema, você pode alocar a matriz no heap usando o operador new. Você pode então retornar um ponteiro para a matriz alocada.

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 

Você pode então usar o ponteiro retornado para acessar o array.

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 

Isso produzirá:

1 3 3 8 4 1 3 4 3 0

Outra alternativa é usar uma estrutura para agrupar o array. Isso pode ser retornado por valor, e a estrutura será copiada, incluindo o array que é interno dentro dela.

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 

Isso também produzirá:

1 3 3 8 4 1 3 4 3 0
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3