Función de programación en lenguaje C

Definición de
función Se nombra una función, un segmento de código C independiente que realiza una tarea especial, y puede elegir si devolver un valor al programa que la llamó.
1. La función se nombra
2. La función es independiente
3. La función puede enviarse al programa que la llamó. devuelve una
función de valor de la función de
biblioteca estándar de clasificación Funciones de biblioteca estándar
ANS / ISO definidas:
cuando se usa, el archivo de encabezado debe definir la función incluirlo al principio del programa
en las funciones de la tercera biblioteca que
no están dentro del estándar, en la extensión del lenguaje C
desde Definición de función
Definición de función de la función
definida por el usuario
tipo de valor de retorno de la función nombre de la función (parámetro formal)
{ variable local del cuerpo de la función }


例子:
int GetMax(int x,  int y){
    
     //定义一个求最大值的函数
 int result;
 if (x>y)
 {
    
    
  result =x;
 }
 else{
    
    
  result =y;
 }
 return 0;   //函数的出口 只能返回一个值
}

Los beneficios de la programación funcional
1. Ocultación de información
2. Para el usuario de la función, no está permitido saber cómo funciona la función
3. Significa comprender su interfaz con el mundo exterior (Interfaz)
4. Ocultar los detalles específicos de implementación de la función del mundo exterior, Mientras la interfaz proporcionada externamente permanezca sin cambios, no afectará el uso de la función.
5. Es conveniente realizar la reutilización de
funciones y el método básico de programación modular . El método básico de llamada de función es que la
función principal llama a la función llamada por el nombre de la función y
no devuelve un valor. Oración corporal

void DisplayMeou(void)
{
    
    
 printf("1.input");
 printf("2.input");
 printf("0.input");
 return ;
 }
 //调用
int mian()
{
    
    
 DisplayMeou();
 return 0;
 }

La persona que llama llama a la función por el nombre de la función

int Average(int x,int y){
    
    
 int result;
 result =(x+y)/2;
 return result;
 //调用
int main(){
    
    
}
int a=12,b=24,ave;
ave =Average (a,b);
return 0;
}

1. La persona que llama llama a la función por el nombre de la función
2. Cuando hay un valor de retorno, se puede colocar en una declaración de expresión de asignación
3. También se puede colocar en una declaración de llamada de función como parámetro de otra función

Parámetros formales Los parámetros reales
de los parámetros cuando se define la función. Los parámetros cuando se llama a la función. Cada vez que se llama a la función. 1. Proteger la escena y asignar memoria para las variables locales (incluidos los parámetros formales) en la función. 2. Asignar una copia del valor real del parámetro al parámetro formal. , Transferencia de valor unidireccional (parámetro real -> parámetro formal) 3. El número, tipo y orden de los parámetros formales participantes reales deben ser los mismos al salir de la función 1. La dirección de retorno guardada en la pila de llamadas de función se devuelve al lugar de esta llamada de función 2. Devolver el valor de la función a la función que llama y, al mismo tiempo, devolver el control al llamante 3. Recuperar la memoria asignada a todas las variables (incluidos los parámetros formales) en la función









例子://函数定义出现在函数调用之前
#include <stdio.h>
int Average(int x,int y){
    
    
 int result;
 result =(x+Y)/2;
 return result;
}
int int main(int argc, char const *argv[])
{
    
    
 int a, b, ave;
 scanf("%d,%d",&a,&b);
 ave =Average(a,b);
 printf("%d\n",ave );
 return 0;
}
例子://函数定义出现在函数调用之后
#include <stdio.h>
int Average(int x, int y); //函数原型声明
int int main(int argc, char const *argv[])
{
    
    
 int a, b, ave;
 scanf("%d,%d",&a,&b);
 ave =Average(a,b);
 printf("%d\n",ave );
 return 0;
}
int Average(int x,int y){
    
    
 int result;
 result =(x+Y)/2;
 return result;
}

La diferencia entre el prototipo de función y la definición de función Definición de
función
1. Se refiere al establecimiento de la función función
2. Tiene cuerpo de función
3. Es una unidad completa e independiente
4. Asignar memoria, cargar función en memoria
Prototipo de función
1. Para nombre de función, tipo de valor de retorno, El tipo de parámetro formal se declara
2. No incluye el cuerpo de la función
3. Es una declaración que termina con un punto y coma y juega un papel declarativo
4. No se asigna memoria, solo se mantiene una referencia

#include <stdio.h>
long Fact(int n);
int main(int argc, char const *argv[])
{
    
    
 int m;
 long result;
 printf("Input m:" );
 scanf("%d",&m);
 ret =Fact(m);
 if (ret == -1)
 {
    
    
  printf("your number is error\n");
 }
 else{
    
    
  printf("%d\n",m,ret );
 }
  return 0;
}
int Fact(int n){
    
    
 int i;
 long result =1;
 if (n<0)
 {
    
    
  result -1;
 }
 else{
    
    
  for (int i = 2; i < =n; i++)
  {
    
    
   result *=i;
  }
  return result;
 }
 }

Principios del diseño de la función
1. El tamaño de la función debe ser pequeño
2. La función debe ser única
3. La definición de la interfaz de la función debe ser clara.
Afirmar
la exactitud de la suposición en el programa de prueba.
Si se viola la suposición, interrumpa la ejecución del programa
. Condiciones de uso:
1. Verificar varios supuestos programa de corrección
2. prueba para confirmar o alguna situación no sucede no sucederá
principio fundamental
1. casos de uso capturan la afirmación no debe o no puede suceder
2. cada afirman prueba sólo una condición
única Se usa para depurar el programa y no se puede usar como una función del programa.
Use aserciones para facilitar el descubrimiento de errores en el programa y no afectará la eficiencia de la ejecución del programa. No
puede reemplazar el filtrado condicional

例子:计算某个数的阶乘
#include  <stdio.h>
#include <assert.h>  //定义断言的宏
unsigned long Fact (unsigned int n);
int main(int argc, char const *argv[])
{
    
    
 int m;
 do{
    
    
  printf("Input m(m>=0):" );
  scanf("%d",&m);
 }while (m<0);
 assert(m>=0);  //如果程序为真,则继续运行,如果为假,中断程序
 printf("%d!= % lu\n",m,Fact(m) );
 return 0;
 }
unsigned long Fact (unsigned int n)
{
    
    
 unsigned int i;
 unsigned long result  =1;
 for (i = 2; i < =n; i++)
 {
    
    
  result *=i;
 }
 return result;
}

Las funciones en línea
suelen ser muy cortas. El compilador intentará ejecutar las funciones en línea de la manera más rápida posible, y el segmento de código que se ejecutará se colocará en la función de llamada principal

Programación estructurada
1. Es más fácil escribir un programa estructurado y es más fácil dividir un problema complejo en una serie de pequeñas tareas simples, cada tarea se completa con una función
2. Es más fácil llamar a un programa estructurado
3. Puede reutilizar segmentos de código Para ganar tiempo

Supongo que te gusta

Origin blog.csdn.net/weixin_45743004/article/details/104223692
Recomendado
Clasificación