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.