Todo programa C é uma coleção de funções. Descubra tudo sobre esses pedaços de código reutilizáveis ​​úteis, desde como defini-los até o que significa void.

Você pode ter abordado a sintaxe básica do C, com exemplos simples, e agora está se perguntando como criar programas maiores do mundo real. Para começar, você desejará organizar seu código em partes eficientes, com um mínimo de repetição. Em C, como na maioria das linguagens, a resposta para seus problemas é a função.

Criar e usar funções em C é simples e traz muitos benefícios. As funções permitem dividir programas complexos em partes menores. Eles fornecem capacidade de reutilização, tanto no programa original quanto em bibliotecas relacionadas ou outros programas separados.

Para começar, você precisará aprender sobre declarações de funções, protótipos, parâmetros e instruções de retorno.

O que são funções em C?

Na programação C, uma função é uma seção nomeada de código que faz algo quando você solicita. Ajuda a manter seu código organizado e permite que você use a mesma ação várias vezes sem se repetir.

instagram viewer

O exemplo mais simples é aquele que você já usa: a função main(). A função principal é particularmente especial porque atua como ponto de entrada principal para qualquer programa C. Você também pode usar funções de biblioteca, que são aquelas que alguém já escreveu, ou pode escrever suas próprias funções definidas pelo usuário.

Funções: declarar, definir e chamar

Esses três aspectos são fundamentais para o uso de funções.

Declaração de Função

Fornece informações sobre o nome, tipo de retorno e parâmetros de uma função, permitindo seu uso antes de sua definição completa. Também é chamado de protótipo de função. Segue esta sintaxe simples:

return_type function_name(parameters);

Onde:

  • tipo_retorno é o tipo de dados do valor que a função retorna. Pode ser qualquer tipo de dados C válido ou vazio se a função não retornar um valor.
  • nome_da_função é o nome que você dá à função. Você usará isso para chamar a função mais tarde.
  • parâmetros é uma lista de parâmetros de entrada que a função aceita, se houver. Cada parâmetro consiste em um tipo de dados seguido por um nome de parâmetro separado por vírgulas.

Por exemplo, aqui está uma declaração de função simples:

intadd(int a, int b);

Definição de Função

Quando você chama uma função, ela executa o código especificado em sua definição. Inclui o nome da função, tipo de retorno, lista de parâmetros e as instruções que definem seu comportamento. Aqui está a sintaxe:

return_type function_name(parameters){
// Function body - code that defines what the function does
// Return a value if applicable
return value;
}

Vamos analisar partes da sintaxe:

Corpo funcional: Este é o bloco de código entre chaves {}. Ele contém as instruções que definem o que a função faz quando é chamada.

Declaração de devolução: Se a função tiver um tipo de retorno diferente de vazio, o retornar instrução envia um valor de volta ao chamador. Este valor deve corresponder ao tipo de retorno especificado.

Aqui está um exemplo simples de definição de função:

intadd(int a, int b){
int sum = a + b;
return sum;
}

Chamada de Função

Assim como na culinária, você pode ter uma receita (definição de função) e alguns ingredientes (argumentos), mas ainda assim precisa seguir as instruções para obter um resultado. Uma chamada de função executará a função com determinados argumentos; aqui está a sintaxe:

return_type result = function_name(arguments);

argumentos: estes são os valores ou expressões que você passa para a função como entradas. Separe cada argumento com uma vírgula. O número, a ordem e os tipos de dados dos argumentos devem corresponder à lista de parâmetros da função.

resultado: Se a função tiver um tipo de retorno diferente de vazio, você poderá capturar o valor retornado usando uma variável do tipo de dados apropriado.

Aqui está um exemplo de chamada de função:

#include

// Function prototype
intadd(int a, int b);

intmain(){
int x = 5, y = 3;

// Call the function and store the result in 'sum'
int sum = add(x, y);
printf("The sum of %d and %d is %d\n", x, y, sum);
return0;
}

// Function definition
intadd(int a, int b){
return a + b;
}

Seguindo estas três etapas – declarar a função, fornecer sua implementação e chamá-la com argumentos apropriados - você pode usar funções com eficácia para executar várias tarefas em seu programa.

Parâmetros de função e valores de retorno

Parâmetros são variáveis ​​declaradas na declaração ou definição da função que atuam como espaços reservados para os valores passados ​​para a função quando chamada. Eles permitem que você passe dados para a função, permitindo que ela trabalhe e manipule esses dados. Valores de retorno são os valores que uma função produz e envia de volta ao chamador.

Existem dois métodos de passagem de parâmetros.

Passar por valor

Com esta abordagem, uma chamada de função copia o valor do argumento real no parâmetro da função. As alterações feitas no parâmetro dentro da função não afetam o argumento original.

Por exemplo:

#include

intsquare(int num){
num = num * num;
return num;
}

intmain(){
int x = 5;
int y = square(x);

// Output: x and y after function call: 5 25
printf("x and y after function call: %d %d\n", x, y);

return0;
}

  • A função quadrada recebe um parâmetro inteiro, número.
  • A função quadrada calcula o quadrado de num, atualiza seu valor e retorna esse novo valor.
  • A função principal declara uma variável inteira, xe atribui a ele o valor 5.
  • Em seguida, ele chama a função quadrada, passando-lhe o valor de x. Ele atribui o resultado a uma segunda variável, sim.
  • Após a chamada da função, main imprime os valores de x e y. O valor de x permanece o mesmo porque alterar o parâmetro num dentro de square não afeta o x original.

Passe por Referência

Usando esta abordagem, você passa o endereço de memória (ponteiro) de um valor para uma função. As alterações feitas no parâmetro dentro da função afetam o valor original fora dela.

Ponteiros, incluindo seu uso como parâmetros, são um dos aspectos do C que o torna diferente de uma linguagem como Python.

#include

voidsquare(int *num){
*num = *num * *num;
}

intmain(){
int x = 5;
square(&x);

// Output: x after function call: 25
printf("x after function call: %d\n", x);
return0;
}

  • O quadrado função recebe um ponteiro inteiro (interno *) parâmetro, número. Não retorna um valor.
  • A função quadrada calcula o quadrado do valor que número contém e atualiza esse valor usando o operador de desreferência de ponteiro, *.
  • O principal função declara uma variável inteira, x, e atribui a ele o valor 5.
  • Em seguida, chama o quadrado função com um ponteiro para x usando o operador endereço de: &x.
  • Após a chamada da função, main imprime o valor de x, que agora é 25 desde as alterações *núm. dentro de quadrado função afeta o original x.

Em resumo, a principal diferença entre os dois métodos é como as alterações no parâmetro dentro da função afetam o valor original fora dela. A passagem por valor cria uma cópia, enquanto a passagem por referência (ponteiro) permite a manipulação direta do valor original.

Outras linguagens geralmente têm ponteiros equivalentes em C, mas geralmente funcionam em um nível superior. Um exemplo é Suporte do C# para variáveis ​​externas.

Funções de Vazio

Funções nulas na programação C são funções que não retornam um valor. Use-os para realizar ações ou tarefas sem produzir resultado. Eles podem alterar seus parâmetros usando passagem por referência, mas não é necessário.

Aqui está um exemplo de uma função void:

#include

// Void function with no parameters
voidgreet(){
printf("Hello, MUO!");
}

intmain(){
// Call the void function, output: "Hello, MUO!"
greet();

return0;
}

As funções void são úteis para executar ações, imprimir mensagens, modificar dados ou realizar tarefas sem exigir um valor de retorno.

Explore funções na programação C

Praticar através da criação de funções aprimora sua compreensão e aplicação em programação C. Além disso, aumenta a legibilidade do código e a facilidade de manutenção. Mergulhe em várias aplicações de funções para desbloquear suas vantagens.

Quando você dominar os fundamentos das funções C e quiser se desafiar, considere mergulhar na recursão.