Jump to content
Fórum Script Brasil
  • 0

Retornar array em C++


lorena1601

Question

4 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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

Edited by Binder
Link to comment
Share on other 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 .

Edited by bruce845
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...