Principiantes de punteros en lenguaje c.

Tabla de contenido

1. ¿Qué es un puntero?

2. Punteros y tipos de punteros

3. Puntero salvaje

4. Aritmética de punteros



        1: ¿Qué es un puntero?

        De hecho, la esencia del puntero es la dirección, para aprovechar mejor el espacio de la memoria dividiremos la memoria en celdas una por una, y la unidad de estas celdas es bytes, y el espacio de cada byte Todo Corresponden a una dirección, estas direcciones son para que podamos encontrar mejor la memoria a través de la dirección y luego usar la memoria. Por ejemplo, usemos ejemplos específicos para ilustrar:

En una máquina de 32 bits, sabemos que hay 32 líneas de alto y bajo nivel, 1/0 (nivel alto, nivel bajo). Estas 32 líneas de direcciones pueden generar hasta 2 ^ 32 direcciones y su tamaño es 2 ^. El tamaño de 32 bytes es igual a 4 GB, por lo que en la máquina de 32 bits, nuestro puntero solo puede administrar 4 GB de memoria, en la máquina de 64 bits, el puntero puede administrar 8 GB de memoria, por lo que el tamaño del puntero es de 4 bytes. y 8 tamaños en bytes.

2 punteros y tipos de puntero:

1: variable de puntero

        Como sugiere el nombre, la variable de puntero se usa para almacenar punteros. Es una dirección. Podemos usar la dirección de un número para encontrar el contenido en la dirección. Explíquelo a través de códigos específicos:>      

2: Tipo de puntero: expliquemos a través de la imagen.

Creo que muchos amigos tienen esas dudas: dado que el tamaño del puntero es de 4 bytes en una máquina de 32 bits y la dirección en la memoria se puede administrar, ¿por qué necesitamos distinguir los tipos?

Si tenemos esta duda tenemos que seguir leyendo, antes tenemos que hablar del concepto de wild pointers.

3: puntero salvaje

        En la web: los punteros salvajes son lugares desconocidos hacia donde apunta el puntero (aleatorios, incorrectos, sin límites explícitos)

        Como su nombre lo indica, el puntero salvaje significa que el lugar señalado por el puntero es ilegal, no se puede utilizar y se opera sin permiso.

        Introduzcamos varias situaciones a continuación, que pertenecen al alcance de los punteros salvajes.

                1: el puntero no está inicializado

                La desinicialización provocará una asignación aleatoria de punteros, lo que también hará que los punteros apunten aleatoriamente a la memoria en la memoria, y cuando usemos punteros, se producirá un acceso ilegal y utilizaremos aleatoriamente el espacio en nuestra memoria:    

 

2: Acceso fuera de límites del puntero:

        Esto es propenso a errores, especialmente cuando usamos matrices. Ilustremos con un ejemplo:

 

3: Se libera el espacio señalado por el puntero:

 Entonces, ¿cómo evitar las sugerencias descabelladas?

1. Inicialización del puntero

2. Cuidado con el puntero fuera de límites

3. El puntero apunta al espacio a liberar y establece NULL en el tiempo.

4. Evite devolver la dirección de una variable local

5. Verifique la validez del puntero antes de usarlo.

Al definir un puntero, debemos pensar hacia dónde apunta el puntero y luego tener cuidado de cruzar el límite.

4: operaciones de puntero

        Operación de 1 puntero + (-) entero

        Significa que el puntero se mueve hacia atrás a la dirección de un tipo de datos. Por ejemplo, si somos un puntero de int*, entonces movemos un espacio del tamaño de una variable entera hacia atrás, y cuando abrimos, abrimos cuatro bytes para un espacio, luego simplemente omita un espacio entero para apuntar al siguiente número, y estamos usando punteros de tipo char*, solo podemos acceder a 1 byte de espacio

 

2 puntero-puntero (cuando se usan dos punteros para operaciones, solo podemos realizar operaciones de resta)

y representar los elementos contenidos entre las dos direcciones.

Y el requisito previo para puntero-puntero es que los dos punteros apunten al mismo espacio, porque no se sabe cuántos elementos son diferentes entre los dos, por lo que el resultado del cálculo no se puede calcular.

        Este artículo está aquí, gracias por su paciencia.

 

        

Supongo que te gusta

Origin blog.csdn.net/2201_75964502/article/details/130713283
Recomendado
Clasificación