Sencilla comprensión de las funciones.

función

Utilice funciones para mejorar la legibilidad y la ejecución del código.

que es una funcion

Una función es una función, una unidad separada de código de programa que cada función usa para realizar una tarea específica, y el nombre de la función es el nombre de la función.

Por lo general, hay parámetros de entrada y valores de retorno.

Clasificación de funciones

Las funciones se dividen en funciones de biblioteca y funciones personalizadas (centrándose en funciones personalizadas)

Funciones de biblioteca

El lenguaje C proporciona funciones que podemos usar directamente

Para respaldar la portabilidad y mejorar la eficiencia del programa, se proporciona una serie de funciones de biblioteca similares en la biblioteca básica del lenguaje C, que es conveniente para que los programadores desarrollen software.
Incluyendo la función printf común y la función scanf está la función IO.

El uso de funciones de biblioteca tiene archivos de encabezado.

Aquí hay un ejemplo de una función de biblioteca simple
strcpy

char* strcpy(char* destination, const char* source);

Así es como se usa la función strcpy obtenida de la búsqueda, y el archivo de encabezado que se puede buscar para esta función es <string.h>


#include<stdio.h>
#include<string.h>//头文件
int main()
{
    
    
    char arr[20] = "abc";
    char b[20] = {
    
     0 };

    strcpy(b, arr);//括号里面的叫做参数
    //这个函数的返回值是char类型
    printf("%s", b);

    return 0;
}

Busque en el sitio web las funciones de la biblioteca:

Necesita aprender a usar la herramienta de consulta:
1.MSDN (Microsoft Developer Network)
2.www.cplusplus.com
3.http://en.cppreference.com (versión en inglés)
4.http://zh.cppreference.com (Versión china) Versión)

función personalizada

función de creación propia

Al igual que las funciones de biblioteca, las funciones personalizadas tienen nombres de función, tipos de valor de retorno y parámetros de función.

//定义函数
type name(parameter)
{
    
    
    
}
//定义函数可以没有括号内的参数,但是返回值类型与函数名以及函数名后面的括号不能少

Nombre de la función

Especifica el nombre de la función que se llamará más tarde.

tipo de valor de retorno

tiene valor de retorno
#include<stdio.h>
int Add()
{
    
    
    return 9;
}//这是一个自定义的函数,函数名叫做Add,返回值类型是int型的
//return 后面的值就是返回的内容,这个值也可以是表达式
int main()
{
    
    
    int x = 0;
    x = Add();//函数返回值会被赋给x,但是要求x的类型与函数返回类型相同
    printf("%d",x);//9
    return 0;
}
sin valor de retorno

También hay funciones sin valor de retorno, por lo que el tipo ingresado en la posición del valor de retorno debe ser nulo, es decir:

void func()
{
    
    
    //这中情况下可以有return,也可以没有return,但是都不会返回到主函数里面
}

parámetro de función

parámetros reales

Los parámetros reales pasados ​​a la función se llaman parámetros reales. Los
parámetros reales pueden ser constantes, variables, expresiones, funciones, etc.
sin importar qué tipo de valor sea el parámetro real. Este valor se pasa al parámetro formal

parámetros formales

Los parámetros formales se refieren a las variables entre paréntesis después del nombre de la función, porque los parámetros formales solo se instancian (unidades de memoria asignadas) en el proceso de llamada de la función, por lo que se denominan parámetros formales. Los parámetros formales se destruyen automáticamente cuando se completa la llamada a la función.
Entonces, los parámetros formales solo son válidos dentro de las funciones.

 #include<stdio.h>
int Add(int c,int d)//被调函数
    //被调函数里面的参数叫做形参
{
    
    
    return c+d;
}
int main()
{
    
    
    int a = 20;
    int b = 30;
    int x = 0;
    x = Add(a,b);//主调函数
    //这里Add函数括号里就是函数的参数
    //主调函数里面的参数叫做实参
    
    printf("%d",x);//50
    return 0;
}

¿Pueden los parámetros formales tener el mismo nombre que los parámetros reales?
Sí, porque los parámetros formales y los parámetros reales funcionan en diferentes unidades de memoria, los alcances son diferentes y no se afectan entre sí.

Declaración y definición de funciones

Definición de función: se refiere al establecimiento de la función función, es decir, el segmento de código que comienza desde el encabezado de la función y termina con el cuerpo de la función.

Una declaración de función
le dice al compilador cómo se llama una función, cuáles son los parámetros y cuál es el tipo de retorno. Pero si existe o no, no está determinado por la declaración de la función.
La declaración de una función generalmente aparece antes del uso de la función. Para satisfacer la declaración antes de su uso.
Las declaraciones de funciones generalmente se colocan en archivos de encabezado.

Si la función se define antes que la función principal, se puede usar sin una declaración
. Si la función se define después de la función principal, la función debe declararse antes de que se pueda llamar a la función.

Paso de datos para llamadas a funciones

Hay dos formas de llamar a una función.

llamar por valor

Pase el valor del parámetro real al parámetro formal. El parámetro formal asigna espacio cuando la función comienza a llamar y almacena el valor del parámetro real. En este caso, el parámetro formal y el parámetro real solo tienen el mismo valor y Direcciones diferentes Los cambios en el valor del parámetro formal en la función de llamada no afectan el parámetro real.

#include<stdio.h>
void Func(int x,)
{
    
    
    x++;
    printf("%d",x);//11
}
int main()
{
    
    
    int a = 10;
    Add(a);
    printf("%d",a);//10
    return 0;
}
llamar por dirección

La llamada por referencia es una forma de llamar a una función pasando la dirección de memoria de una variable creada fuera de la función al parámetro de la función.
Este método de pasar parámetros permite que la función establezca una conexión real con las variables fuera de la función, es decir, la función puede operar directamente las variables fuera de la función.

#include<stdio.h>
Func(int *pa)
{
    
    
*pa = *pa + 1;    
}
int main()
{
    
    
    int a = 10;
    Func(&a);
    printf("%d",a);//11
    return 0;
}//把变量a的地址存放在指针变量pa里面,后面*pa的操作就是在改变a的值
Ejercicios sobre el uso de funciones.

1. Escribe una función para determinar si un número es primo o no.

//是素数返回1;
//不是素数返回0;
#include<stdio.h>

int is_prime(int n)
{
    
    
	int j = 0;
	for (j = 2; j < n; j++)
	{
    
    
		if (n % j == 0)
		{
    
    
			return 0;//直接返回,程序直接结束
		}
}
	return 1;
}

int main()
{
    
    
	int a = 0;
	int b = 0;
	for (a = 100; a <= 200; a++)
	{
    
    
		if (is_prime(a))
            /*返回0就不打印,返回1就打印*/
		{
    
    
		printf("%d", a);
		}
	}
	return 0;
}

2. Escribe una función para determinar si un año es bisiesto.

#include<stdio.h>

int is_leap_year(int b)
{
    
    
if ((b % 4 == 0 && b % 100 != 0) || b % 400 == 0)
		return 1;
	else
		return 0;
}

int main()
{
    
    
	int a = 0;
	for (a = 1000; a <= 2000; a++)
	{
    
    //判断
		if (is_leap_year(a))
		{
    
    
			printf("%d  ", a);
		}
		
	}
    return 0;
}

3. Escriba una función para implementar una búsqueda binaria de una matriz ordenada de enteros

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>

int binary_serach(int arr[], int k,int sz) 
{
    
    

	int left = 0;
	int right = sz -1;//最右边的下标是数组元素个数-1

	while (left <= right)
	{
    
    
		int mid = (left + right) / 2;
	
		if (arr[mid] > k)
		{
    
    
			right = mid - 1;
		}
		else if (arr[mid] < k)
		{
    
    
			left = mid + 1;
		}
		else
		{
    
    
			return mid;
		}
	}
	return -1;//找不到了
}


//如果找到了返回下标,找不到返回-1;
int main()
{
    
    
	int arr[10] = {
    
     1,2,3,4,5,6,7,8,9,10 };
	int k = 7;
	int sz = sizeof(arr) / sizeof(arr[0]);//可以计算数组元素个数

	int ret = binary_serach(arr,k,sz);
	//数组arr再传参的时候传递的是首元素的地址	--->接收的是指针,大小是4

	if (-1 == ret)
	{
    
    
		printf("找不到\n");
	}
	else
	{
    
    
		printf("找到了\n");
		printf("下标是%d", ret);
	}
	return 0;
}

Llamadas anidadas y acceso encadenado de funciones

llamadas anidadas
#include <stdio.h>
void new_line()
{
    
    
 printf("hehe\n");
}
void three_line()
{
    
    
    int i = 0;
 for(i=0; i<3; i++)
   {
    
    
        new_line();//早这个函数中调用new_line函数
   }
}
int main()
{
    
    
 three_line();
 return 0;
}

Las funciones se pueden llamar definiciones anidadas, pero no anidadas

acceso encadenado

Utilice el valor de retorno de una función como argumento para otra función.

int main()
{
    
    
    printf("%d", printf("%d", printf("%d", 43)));
    //注:printf函数的返回值是打印在屏幕上字符的个数
    //所以结果是4321
    return 0;
}

función recursiva

¿Qué es la recursividad? La técnica de programación en la que un programa se llama a sí mismo se llama recursividad.
La recursividad como algoritmo es ampliamente utilizada en lenguajes de programación.
Un procedimiento o función en su definición o descripción tiene un método de llamarse a sí mismo directa o indirectamente, lo que generalmente transforma un problema grande y complejo en un problema más pequeño similar al problema original a resolver.La
estrategia recursiva solo se puede resolver un número reducido de programas. se utiliza para describir los cálculos repetidos necesarios para el proceso de resolución de problemas, lo que reduce en gran medida la cantidad de código del programa.
La forma principal de pensar en la recursividad es: hacer pequeñas las cosas grandes
Dos condiciones necesarias para la recursividad
Hay restricciones, cuando se cumplen las restricciones, la recursividad no continuará.
Se acerca más y más a este límite después de cada llamada recursiva.

Ejercicios de función recursiva

Toma un valor entero (sin signo) e imprime sus bits en orden. Por ejemplo: Entrada: 1234, salida 1 2 3 4.


#include <stdio.h>
void print(int n)
{
    
    
 if(n>9)
 {
    
    
 print(n/10);
 }
 printf("%d ", n%10);
}
int main()
{
    
    
 int num = 1234;
 print(num);
 return 0;
}

encontrar el factorial de n



#include<stdio.h>
int func(int n)
{
    
    
    if (n == 1)
        return 1;
    else
        return n * func(n - 1);
}

int main()
{
    
    

    int n = 0;
    scanf("%d", &n);
    int ret = 0;
    ret  = func(n);
    printf("%d", ret);

    return 0;
}

Implementar recursivamente la función strlen



#include<stdio.h>

int my_strlen(char *s)
{
    
    
    if (*s == '\0')
        return 0;
    else
        return 1 + my_strlen(s+1);
}
int main()
{
    
    
    char arr[] = "abcd";
    int len = 0;
    len = my_strlen(arr);
    printf("%d", len);

    return 0;
}

Calcular números de Fibonacci



#include<stdio.h>

int fib(int n)
{
    
    
    if (n <= 2)
        return 1;
    else
        return fib(n - 1) + fib(n - 2);
}
int main()
{
    
    

    int n = 0;
    int num = 0;
    scanf("%d", &n);
    num = fib(n);
    printf("%d", num);
    return 0;
}

de lo contrario,
devuelve 1 + my_strlen (s + 1);
}
int main()
{ char arr[] = “abcd”; largo int = 0; len = my_strlen(arr); printf("%d", largo);



return 0;

}


计算斐波那契数

```c


#include<stdio.h>

int fib(int n)
{
    if (n <= 2)
        return 1;
    else
        return fib(n - 1) + fib(n - 2);
}
int main()
{

    int n = 0;
    int num = 0;
    scanf("%d", &n);
    num = fib(n);
    printf("%d", num);
    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/cainiaochufa2021/article/details/121214674
Recomendado
Clasificación