Ir para conteúdo
Fórum Script Brasil
  • 0

Retornar array em C++


lorena1601

Pergunta

4 respostass a esta questão

Posts Recomendados

  • 0

Olá, em java tá assim:

//Método que escolhe dois processos ainda não executados e retorna a posição de ambos
    public int[] returnProc(boolean[] procb){
    int aux1 =0, aux2 = 0;
    int resp[] = new int[2];
        ...
        resp[0] = aux1;
        resp[1] = aux2;
        return resp;
    }

Em c++, o nome do método deveri ficar algo assim:

int[] returnProc(bool vetor[]){

mas sempre dá erro nessa linha, acho q só pode ser o retorno, esse int[] está errado?

Link para o comentário
Compartilhar em outros sites

  • 0

A maneira de enviar um vetor para uma função é assim:

Envia para função um vetor:

int main(){
int vetor[2];
resultado= returnProc(vetor);
}
Onde eu criei uma variavel chamada "resultado" dentro do main, que recebe o retorno do resultado da função. Recebe vetor na função,pelo que li a respeito tem 3 formas de enviar: 1) Maneira:
int returnProc(int vetor[2]){
   //logica do problema
}
2) Maneira:
int returnProc(int vet[]){
  //logica do problema
}
3) Maneira: Onde se cria um ponteiro para vetor:
int returnProc(int  *numeros){
  //logica do problema
}

Fonte: http://www.ic.uff.br/~hcgl/passagem_parametro.htm

Editado por Binder
Link para o comentário
Compartilhar em outros sites

  • 0

Olha, apesar do C++ ser mais evoluído que C, ainda contém uns incovenientes do C que precisam um pouco mais da nossa atenção.

Existe um incoveniente em C++ em relação ao Java, que tudo alocado deve ser liberado da memóra (note que em C++ não existe o "Garbage Collector").

Declarações de array em C++ alocadas dinamicamente (com o uso do operador new) devem ser declaradas desta forma:

Exemplo de um array de inteiros:

int *vetor = new int[30];
Obs.: Diferentemente do Java, array em C++ não é um objeto, mas uma simples sequência de dados em memória (como no C). O seu método/função, deve retornar um ponteiro da posição inicial do array. No seu exemplo, ficaria assim:
int *returnProc(bool *procb){ // Ao invés de int[], coloque int *.
    int aux1 =0, aux2 = 0;
    int *resp = new int[2]; // Ao invés de resp[], coloque *resp.
        ...
        resp[0] = aux1;
        resp[1] = aux2;
        return resp;
    }

Para alguma variável receber o retorno dessa função, esta deve ser declarada com int* (ponteiro de int).

Estude um pouco mais sobre ponteiros e matrizes na linguagem C.

E será muito bom você postar as suas tentativas aqui, aí nós consertamos :D .

Editado por bruce845
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...