Conceitos de Funções, Procedimentos e Alocação de Memória

Classificado em Computação

Escrito em em português com um tamanho de 3,02 KB.

Funções e Procedimentos

Funções

Toda função criada por obrigação deve ter um retorno. Utilizamos funções geralmente quando precisamos calcular algo, retornar algum valor verdadeiro ou realizar algum teste.

Procedimentos

São semelhantes a funções, mas não precisam necessariamente ter um retorno. Geralmente utilizamos procedimentos quando precisamos utilizar códigos repetidamente. Um procedimento concentra nossos códigos e podemos chamá-los a qualquer momento.

Variáveis

Variáveis Locais

Variáveis locais são aquelas que apenas a função onde estão declaradas pode usar. Elas estão presas às funções. Cada vez que chamamos uma função, também chamamos as variáveis dentro dela.

Variáveis Globais

São declaradas da mesma forma que uma variável local: primeiro o tipo, depois o nome. A diferença é que são declaradas fora de qualquer função. Variáveis globais podem ser utilizadas e alteradas por qualquer função.

Passagem de Parâmetros

Por Valor

A função recebe uma cópia da variável fornecida quando é invocada. Alterações feitas dentro da função não afetam os valores originais.

Por Referência

O que é enviado para a função é uma referência às variáveis utilizadas, não uma cópia. Alterações realizadas dentro da função afetam os valores originais.

Recursividade

Recursividade é a habilidade de uma função chamar a si mesma. Basta escrever no código da função, a própria função como se já tivesse sido criada. Apesar de o algoritmo ser curto, toda vez que chamamos uma função, leva um certo tempo para ser processada.

Ponteiros e Alocação Dinâmica

Ponteiros

Ponteiros são 'variáveis' que guardam um endereço de memória. Ao declarar um ponteiro, informamos ao compilador o tipo de variável para o qual ele apontará. Um ponteiro int aponta para um inteiro, ou seja, guarda o endereço de um inteiro. Outros tipos apontarão para outros tipos de conteúdo.

Alocação Dinâmica

Às vezes, a quantidade de memória a ser alocada só é conhecida durante a execução do programa. Para lidar com isso, usamos a alocação dinâmica de memória, gerenciada pelas funções malloc e free da biblioteca stdlib.

Malloc

Aloca um bloco de bytes consecutivos na memória e devolve o endereço desse bloco. O número de bytes é especificado no argumento da função. O endereço devolvido é do tipo "genérico" void *. O programador armazena esse endereço em um ponteiro de tipo apropriado.

Free

Variáveis alocadas estaticamente dentro de uma função desaparecem ao fim da execução. Variáveis alocadas dinamicamente continuam existindo. Para liberar a memória ocupada por elas, usamos a função free. O comando free(ptr) avisa o sistema que o bloco de bytes apontado por ptr está livre para ser usado na próxima chamada de malloc.

Entradas relacionadas: