introdução
A importância da linguagem C e funções na programação
Uma frase do romance “O Espadachim Lutador na Neve” resume a importância das funções na linguagem C: “Se o céu não tivesse me dado à luz, Li Chungang, a espada seria como uma longa noite”. a programação é a mesma de Li Chungang na espada.
As funções da linguagem C desempenham um papel importante na reutilização de código, design modular, parâmetros de função, pilha de chamadas de função e recursão. O uso adequado das funções pode melhorar a eficiência, a legibilidade e a facilidade de manutenção do seu programa.
componentes de função
As funções na linguagem C consistem nas seguintes partes:
- Nome da função: O nome da função é o identificador da função e é usado para chamar a função no programa. Os nomes das funções devem ser descritivos para que seja fácil entender o que a função faz.
- Lista de parâmetros: A lista de parâmetros inclui o tipo, ordem e número de parâmetros de entrada aceitos pela função. Cada parâmetro na lista de parâmetros possui um tipo e um identificador.
- Tipo de valor de retorno da função: O tipo de valor de retorno da função é o tipo de dados retornado após a execução da função. Se a função não retornar nenhum valor, o tipo de valor de retorno será nulo.
- Corpo da função: O corpo da função é o bloco de instruções que contém o bloco de código específico para a execução da função. Define como a função é executada, incluindo o processamento dos parâmetros de entrada e o cálculo dos valores de retorno.
Para criar uma função, ela deve conter os elementos básicos acima.
A seguir está um exemplo simples que mostra a composição das funções da linguagem C:
int add(int a, int b) // 函数名:add,参数列表有两个 int 类型的参数 a 和 b
{
int result = a + b; // 计算 a 和 b 的和,存储到 result 变量中
return result; // 返回 result 的值
}
Neste exemplo, o nome da função é add. A lista de parâmetros tem dois parâmetros de tipo int a e b. O tipo de valor de retorno da função é int. O corpo da função contém instruções que calculam a soma de a e b e armazenam o resultado no resultado variável.Finalmente, o valor do resultado é retornado por meio da instrução return.
Na linguagem C, os parâmetros formais e os parâmetros reais são partes importantes das funções.
Visão geral dos parâmetros formais
Parâmetro formal: O nome completo é "parâmetro formal". É uma variável listada entre parênteses após o nome da função quando a função é definida. É utilizada para receber os parâmetros passados quando a função é chamada.
A função dos parâmetros formais é realizar a conexão entre a função chamadora e a função chamada.Normalmente, os dados processados pela função, os fatores que afetam a função da função ou o resultado do processamento da função são usados como parâmetros formais.
Visão geral dos parâmetros reais
Parâmetro real: O nome completo é "parâmetro real". Os parâmetros reais são os valores reais passados para a função ao chamar a função. Eles podem ser constantes, variáveis ou expressões.
A função dos parâmetros reais é fornecer os dados necessários para a execução da função e são usados dentro da função.
A relação entre parâmetros reais e formais
em,Os parâmetros reais e os parâmetros formais devem ser consistentes em número, tipo e ordem, caso contrário ocorrerão erros de compilação.
Na linguagem C, os dados de parâmetros formais e parâmetros reaisOs tipos devem ser compatíveis, ou seja, a conversão de tipo pode ser realizada entre eles.
Especificamente, se o parâmetro formal for um tipo de dados básico, como int, e o parâmetro real for do tipo double, então o parâmetro real converterá o tipo double para o tipo int por meio da conversão de tipo e depois o passará para o parâmetro formal .
Se o parâmetro formal for um tipo de estrutura e o parâmetro real for um tipo de estrutura diferente, então o parâmetro real precisa ser convertido para o mesmo tipo de estrutura que o parâmetro formal por meio de atribuição ou cópia de estrutura.
Se o parâmetro formal for um tipo de ponteiro e o parâmetro real for um tipo de ponteiro diferente, o parâmetro real precisará ser convertido no mesmo tipo de ponteiro que o parâmetro formal por meio da conversão de ponteiro.
Resumindo, quando uma função é chamada, o tipo de dados do parâmetro real deve ser compatível com o parâmetro formal ou pode ser convertido em um tipo compatível por meio da conversão de tipo.
A diferença entre parâmetros formais e reais
diferenças no ciclo de vida
O escopo dos parâmetros formais é limitado ao interior da função. Assim que a execução da função termina, o ciclo de vida dos parâmetros formais também termina.
O escopo dos parâmetros reais geralmente é limitado ao período de chamada da função. Quando a função termina, o ciclo de vida dos parâmetros reais termina.
Do ponto de vista do ciclo de vida, o ciclo de vida dos parâmetros formais é mais curto do que o dos parâmetros reais.
Diferenças no local de armazenamento
Os parâmetros reais e os parâmetros formais possuem espaços de armazenamento separados e não compartilham memória entre eles.
#include <stdio.h>
void func(int a, int b)
{
printf("a = %p, b = %p\n", &a, &b);
}
int main()
{
int x = 10, y = 20;
printf("x = %p, y = %p\n", &x, &y);
func(x, y);
return 0;
}
Conforme mostrado na figura acima, você pode ver que os endereços de x e y são diferentes dos endereços de a e b.
Conforme mostrado na imagem acima, xey obtêm os valores de aeb, mas os endereços de xey são diferentes dos endereços de aeb, então podemos entendê-los comoO parâmetro formal é uma cópia temporária do parâmetro real。