Implementación de funciones C/C++ de cero a abajo

Prólogo: En C y C ++, las funciones se pueden describir como un importante módulo de cinco estrellas. Hoy explicaremos las funciones, nos centraremos en la cosecha y seguiremos mi ritmo.

Tabla de contenido

1. Plantilla de definición de función: tipo de retorno nombre de función (parámetro 1, parámetro 2, parámetro 3...) {contenido del cuerpo de la función y parámetros}

2. Declaración de función

1) ¿Por qué hay una declaración?

2) El formato de la declaración de la función (tome la función anterior como ejemplo, antes de usarla)

3. El establecimiento y destrucción del marco de la pila de funciones, luego primero comprenda el código de demostración.

 2) Expandir

1) ¿Qué es un puntero de función?

2) Discusión de la función principal.


1. Plantilla de definición de función: tipo de retorno nombre de función (parámetro 1, parámetro 2, parámetro 3...) {contenido del cuerpo de la función y parámetros}

void sort(int *array){}
void(返回类型)sort(函数名称)(int *array)(函数参数){函数体}

2. Declaración de función

1) ¿Por qué hay una declaración?

Debido a que la computadora ejecuta desde la función principal de arriba a abajo, si la función se define antes de su uso, naturalmente no es necesario definirla, porque la computadora ya ha reconocido la función, pero si no, la computadora informará un error "irresoluble". "Error de comando externo". Sin embargo, este método no es realista cuando se diseñan y escriben programas grandes. Esto afectará seriamente la legibilidad de la función. El propósito de la declaración de función es permitir que la computadora identifique la función de antemano.

2) El formato de la declaración de la función (tome la función anterior como ejemplo, antes de usarla)

void sort(int* array);

3. El establecimiento y destrucción del marco de la pila de funciones, luego primero comprenda el código de demostración.

#include<stdio.h>
int Add(int a, int b) {
	return a + b;
}
int main() {
	int a, b;
	scanf("%d%d", &a, &b);
	int c = Add(a, b);
	return 0;
}

1) El nombre de la función es en realidad la dirección. Solo hay una copia de la función. Cuando la computadora se ejecuta aquí, encontrará la función a través de la dirección, pero aún quedan varias operaciones antes de ingresar a la función. Primero, guarde el dirección de ejecución actual, y luego Los parámetros se insertan en la pila y se copian (solo por valor), y luego se ingresan en la función. Después de ejecutar la función, se destruirá y se extraerá de la pila. A continuación, vea mi diagrama a continuación para su comprensión.

 2) Expandir

1) ¿Qué es un puntero de función?

Todo el mundo sabe que existen punteros a números enteros y punteros a coma flotante. Entonces, dado que el nombre de la función es una dirección, ¿podemos usar un puntero para recibir su dirección? La respuesta es SÍ. Ahora que sabemos que un puntero puede recibir una función, ¿cómo debemos recibirla? En primer lugar, el tipo de puntero es el mismo que el valor de retorno de la función. En segundo lugar, debe haber *, y luego debe ser el nombre del puntero. Para garantizar que * se combine con el nombre del puntero, paréntesis debe usarse para combinar los dos, el último es el tipo de parámetro de la función, que no tiene que ser Hay el nombre del parámetro, pero es necesario indicar el tipo del parámetro. A continuación mostramos cómo escribir el puntero correspondiente a la función.

1)
int Add(int a,int b);
//一一对应
int (*ptr)(int ,int )=Add;
2)
int *ButNode(struct Node* List, int n);
//一一对应
int *(*ptr)(struct Node*,int)=BuyNode;

2) Discusión de la función principal.

Aunque la función principal tiene una palabra principal adicional, es esencialmente una función. Es esencialmente la primera función que se ejecuta. Se hace referencia a la función principal a través de las funciones que ya existen en el sistema de compilación. Dado que involucra los principios de implementación subyacentes, es difícil de considerar Es relativamente grande. Recomiendo usar VS2019 para observar la ejecución del código antes de la función principal. Los pasos de observación son relativamente complicados. No lo describiré demasiado aquí. Consulte la información en línea para explorar tú mismo. A continuación, podrá aprender sobre usos interesantes de funciones, como la recursividad de funciones, que tiene una estética de simplificación de la complejidad.

Si todos tienen algo que ganar, es mejor que Sanlian (siga, dé me gusta y recopile) nos vemos

Supongo que te gusta

Origin blog.csdn.net/m0_74316391/article/details/130795536
Recomendado
Clasificación