SamL
(usa XUbuntu)
Enviado em 17/01/2022 - 18:03h
Ameba escreveu:
fala pessoal, bl?
então estava dando uma estudada em retorno de função, até que vi uma aula sobre retorno de função com ponteiro.
exemplo:
#include <stdio.h>
#include <stdlib.h>
void recebe(int *num){
*num = *num * 2;
}
int main(){
int send=15;
printf("%d\n", recebe(&send));
return EXIT_SUCCESS;
}
mas o problema é que esse codigo não compila, e eu não sei o que pode ser, não sei se isso pode ser incompatibilidade tambem
porque eu uso linux, meu professor usa windows
O retorno de toda função em C é declarado a esqierda do nome da função:
TIPO_RETORNO nomeFuncao( parametros)
Exemplo:
int soma(int a, int b){
return a + b;//função retorna um inteiro
}
void somaComPonteiro(int a, int b, int *resultado) {
*resultado = a + b;//soma a + b no endereço de resultado
//esta função não retorna nada, veja o void (vazio) dela
}
Quando uma função é clerada sem ser como void, significa que ela faz algo e então retorna um valor:
int soma(int a, int b) // vai retornar a soma de a e b
void somaEImprime(int a, int b)//vai somar e imprimir o resultado na saída
Por tanto, aquele seu printf("%d\n", recebe(&send)); está errado porque a função "recebe" não retorna nada, ela apenas faz uma operação interna no parâmetro send.
void recebe(int *num){
//apenas usa o valor do endereço de num e multiplica por 2 e então salva em num novamente
*num = *num * 2;
//não retorna nada
}