Ir ao conteúdo
  • Cadastre-se

Diferença entre usar void() e não usar?


msdos

Posts recomendados


int retornaDois() {
return 2;
}

void imprimeDois() {
printf("2");
}

A primeira função retorna um valor, a segunda não.

Se o seu código tivesse essas duas funções e você quisesse imprimir o número 2, você poderia usar:

printf ( "%d" , retornaDois() );

ou:

imprimeDois();

As duas declarações fazem exatamente a mesma coisa... a diferença é que a primeira apenas retorna o número 2 e você que vai imprimir ele... A segunda já faz isso por você.

Em um programa existem casos onde você vai precisar de cada uma delas.

Link para o comentário
Compartilhar em outros sites

Aproveitando o assunto..

eu sei que em java é possível fazer... já em C eu acho que não.. mas não custa perguntar..

se eu criar uma função VOID em um arquivo normal.. ( por exemplo.. soma 2 números )

Eu consigo fazer a chamada dela em OUTRO programa que eu estiver implementando??

Acho que ai já cairia em linguagem orientada objeto não é?

Link para o comentário
Compartilhar em outros sites

se eu criar uma função VOID em um arquivo normal.. ( por exemplo.. soma 2 números )

Eu consigo fazer a chamada dela em OUTRO programa que eu estiver implementando??

Eu não sei se entendi a pergunta... mas se for o que penso, basta dar um #include no código onde ela está e compilar tudo junto (ou usar como dll).

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Em programação de computadores uma função é um conceito adaptado da matemática, e expandido. Por volta do 8º ou 9º anos, estudamos em matemática a matéria de funções na forma f(x) = ax+b.

Usando como exemplo a função f(x) = 2x + 3 podemos entender que o significado desta função é:

-> Passa-se um parâmetro (valor) para ser tratado pela função. Neste caso, o valor é representado pela variável x. O nome da variável não importa, haja visto que podemos dizer sem equívocos: f(y) = 2y + 3 ou qualquer outra letra.

-> Este parâmetro (valor) recebe um tratamento. No exemplo acima, o tratamento é este:

Multiplica-se o valor de x por 2;

Soma-se ao resultado o número 3.

O resultado desta função é o valor de f(x), ou seja, o valor que "sai" da função após o tratamento recebido. De uma forma mais abrangente, podemos dizer que este é o valor que a função "retorna" para quem está fazendo uso dela.

Em programação estes conceitos são ampliados. A função f(x) = 2x + 3, cujo domínio é o conjunto dos números reais, pode ser escrita, em C, deste modo:

float f(float x)
{
float resultado;
resultado = (2 * x) + 3;
return resultado;
}

Perceba que float é, em programação, uma forma de representar o conjunto dos números reais. "f" é o nome da função (poderia ser outro). Dentro dos parênteses, tal como na matemática, indicamos os "parâmetros" que esta função vai receber para serem tratados. No caso, é um valor real nomeado de "x". Dentro dos caracteres "{" e "}" é feito o tratamento e a linha

return resultado;

devolve ao usuário da função o valor final do tratamento feito.

Quando disse que em programação estes conceitos foram ampliados, quis dizer que eles são mais flexíveis que na matemática da escola. Por exemplo, em uma função de programação podemos passar quantos argumentos desejarmos, e dos mais variados tipos, além de podermos realizar quantos tratamentos desejarmos dentro dela, ex:

int funcao(int a, float 
{
if (b == 3)
return a;
else
return a+b;
}

Além disso, as linguagens de programação nos oferece a possibilidade de uma função não retornar nenhum valor ou não receber nenhum parâmetro, o que não é possível nas funções matemáticas. Considera-se, neste caso, que o retorno é "vazio", no inglês "void". Assim, se desejarmos que uma função apenas imprima algo na tela, podemos escrever:

[B]void[/B] imprimir([B]void[/B])
{
printf("Este função imprimiu algo.");
}

Espero ter ajudado. :rolleyes:

Link para o comentário
Compartilhar em outros sites

Obrigado pelas respostas! Estão muito bem explicadas.

Eu não tava entendendo sobre o uso da void. Mesmo vendo pela internet.

Quando uma programação geralmente uso funções para retornarem seus valores, matemáticos ou concatenados.

E se não estou enganado a void é muito pouco usada...

Tirando o caso de objetos padrões.

Ex: int main(void){} (em C)

Adicionando. Só não sei se posso usá-la como um valor. Seria muito contraditório. ^_^

Ex: int a = void(); // Sem falar que eu não sei se a void é um int ou uma string...

valeu.

Link para o comentário
Compartilhar em outros sites

  • 6 anos depois...
  • 2 semanas depois...

Como posso retornar void, já que void não retorna nada?

Como no exercício a seguir:

 

Faça uma função que retorne ao programa principal um vetor com os três primeiros números perfeitos.
Sabe-se que um número é perfeito quando é igual à soma de seus divisores (exceto ele mesmo).
Exemplo: os divisores de 6 são 1, 2 e 3 e 1 + 2 + 3 = 6, logo, 6 é perfeito.
//Protótipo da função
- void NumerosPerfeitos(int vetor[], int tam);

Link para o comentário
Compartilhar em outros sites

Observe que o protótipo desta função contém um vetor de inteiros.

 

Vetores, funcionam como ponteiros, indicando as posições na memória onde é armazenado cada valor contido no vetor. Então quando se passa um vetor como parâmetro para uma função o que é enviado são as posições da memória onde estão os valores deste vetor (não os valores contidos neste vetor, como é o caso quando se passa uma variável comum).

 

Logo, quando a função faz alterações nos valores do vetor declarado em seu protótipo, está de fato fazendo alterações nas posições da memória que foram passadas para este, ou seja estará alterando o vetor do escopo original que chamou esta função.

 

Portanto, usando este fato os resultados podem ser "retornados" para o escopo que chamou a função através do próprio vetor passado como parâmetro dela.

 

Veja um exemplo abaixo:

#include <stdio.h>

void altera_vetor(int vetor[]){
  vetor[0] = 1;
  vetor[1] = 2;
  vetor[2] = 3;
}

int main(){
  int vetor[3] = {4, 5, 6};
  
  printf("Antes: %d %d %d\n", vetor[0], vetor[1], vetor[2]);
  
  altera_vetor(vetor);
  printf("Depois: %d %d %d\n", vetor[0], vetor[1], vetor[2]);
  
  return 0;
}

Saída:

Antes: 4 5 6
Depois: 1 2 3

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!