Red de conocimiento informático - Aprendizaje de código fuente - Cómo aprender punteros. ¿Por qué no sé nada? ¿Existe algún documento de orientación detallado? Gracias por su ayuda.

Cómo aprender punteros. ¿Por qué no sé nada? ¿Existe algún documento de orientación detallado? Gracias por su ayuda.

De hecho, los punteros son fáciles de aprender. La clave es si puedes entender el funcionamiento de los punteros de forma abstracta.

En primer lugar, la memoria de la computadora: si quieres poner cosas en ella. memoria, debe haber espacio y la computadora debe tener este espacio. Si se puede arreglar, ¿qué debemos hacer? Bien hecho, tener una dirección numerada sólo para él. Entonces debes entender que una unidad espacial tiene dos aspectos en la memoria: 1. El valor que se puede colocar, y 2. Tiene un número.

Baja y mira de dónde viene este valor, ¿cómo se obtiene esta dirección? Cómo ponerlo a funcionar. Esto también es bueno. Ahora, usted no puede ver el espacio y no puede estar seguro de cuál es la dirección. ¿No es esto muy abstracto?

¡No te preocupes! Generalmente definimos una variable en el programa, como int k. Te lo digo ahora, corresponde a un valor espacial. Es decir, si le asigno a k un valor de 5, equivale a poner un número entero 5 en el espacio. Si ya hay un 5 en el espacio y quiero usarlo, ¿qué debo hacer si el espacio está etiquetado como k? (Una cosa, justo ahora fue una asignación directa. (Asegúrese de recordar)

Eso no es una asignación directa, sino entrada a través del teclado. ¿Qué debo hacer? Eso es diferente. Dado que es una forma de asignación. Ahora el valor proporcionado por la entrada del teclado es diferente de la asignación directa. Entonces, ¿qué debemos hacer? Ahora queremos usar la dirección así es como la ingresamos, porque es equivalente a darla en vano. Y parece que el teclado no lo sabe. Los datos deben entregarse en ese espacio, por lo que debe especificar claramente la unidad si desea salir. Los dos mencionados hace un momento son abstractos y no se pueden ver. Entonces solo puedo usar la dirección. Por lo tanto, ingrese los datos en c. Puede usar & más el nombre de la variable para representar la dirección de esta unidad variable.

Entonces, ¿qué es? ¿Puntero? Para decirlo sin rodeos, un puntero es equivalente a un alias. Si quiero realizar operaciones en la unidad de datos en función de su dirección, debo definir la cantidad correspondiente a la dirección. Entonces, ¿qué debo hacer? Un ligero cambio en el formato puede distinguirlos. Si defino un puntero en forma de definición de variable ordinaria, pero agrego un * delante de int *p;, esto significa que p ya no puede ser. una variable ordinaria y es una variable de puntero. La diferencia es que p no puede almacenar el valor de una variable ordinaria. Solo puede especificar la dirección donde se almacena el valor. Es la dirección del espacio que puede almacenar el mismo tipo de datos. como antes, es decir, puede almacenar la dirección de la unidad k ahora mismo en la unidad p, como p = & k, pero no debe almacenar el valor de una cantidad ordinaria en la unidad p, como p = k; K corresponde a 5, por lo que equivale a p = 5. Esto está mal, la sintaxis es confusa

¿Entiendes?

Entonces, al definir un puntero, * indica cómo. Hay muchos niveles de punteros, comenzando desde 1, la descripción es puntero de nivel 1, puntero de nivel 2, etc. Además, el puntero debe corresponder uno a uno con el nivel de las variables ordinarias. a la variable ordinaria de nivel 1, por lo que el puntero de nivel 2 corresponde al puntero de nivel 2. Si no hay una serie correspondiente directa de variables ordinarias, puede bajar los pasos y reducirlos a cantidades ordinarias paso a paso.

Por ejemplo, defina int **p1, *p2;

Entonces puede ser así p2=&k, p1=&p2;Pero no puede ser así directamente p1=&k. >

En cuanto a la aritmética, se dice en el libro que es una operación inversa.