La declaración de un puntero en c ++

UN carbonizarse variable en C ++ está diseñado para contener un carácter ASCII, una int un número entero, y una doble un número de coma flotante. Del mismo modo, una variable puntero está diseñada para contener una dirección de memoria. Se declara una variable puntero mediante la adición de un asterisco (*) al extremo del tipo del objeto que el puntero apunta a, como en el siguiente ejemplo:

char * PChar - // puntero a una characterint * pInt- // puntero a un int

Una variable puntero que de otro modo no se ha inicializado contiene un valor desconocido. Utilizando el signo (&) Del operador, puede inicializar una variable puntero a la dirección de una variable del mismo tipo:

Char cSomeChar = `a`-char * PChar-PChar = &cSomeChar-

En este fragmento, la variable cSomeChar tiene alguna dirección. Pongamos por caso, decir que C ++ le asignó el 0x1000 dirección. (C ++ también inicializa ese lugar con el carácter `un`.) La variable PChar También cuenta con una ubicación de su propia, tal vez 0x1004. El valor de la expresión &cSomeChar es 0x1000, y su tipo es carbonizarse* (Léase “puntero a carbonizarse“).

Así que el trabajo en la tercera línea del fragmento de ejemplo almacena el 0x1000 valor en la variable PChar.

Tome un minuto para entender realmente la relación entre la figura y las tres líneas de código C ++ en el fragmento. La primera declaración dice, “salir y encontrar un lugar de 1 byte en la memoria, asignarle el nombre cSomeChar, e inicializar a `un`.”En este ejemplo, C ++ recogió el 0x1000 ubicación.

La siguiente línea dice, “salir y encontrar un lugar lo suficientemente grande como para contener la dirección de un carbonizarse variable y asignarle el nombre PChar.”En este ejemplo, C ++ asignados PChar 0x1004 a la ubicación.

La tercera línea dice, “asignar la dirección de cSomeChar (0x1000) a la variable PChar.”La cifra representa el estado del programa después de estos tres estados.

“Entonces, ¿qué?”, Dices. Aquí viene la parte realmente fresco, como se demuestra en la siguiente expresión:

* PChar = `B`-

Esta línea dice, “tienda de una `segundo` en el carbonizarse lugar al que apunta PChar.”Esto se demuestra en la siguiente figura. Para ejecutar esta expresión, C ++ primera recupera el valor almacenado en PChar (Que sería 0x1000). A continuación, almacena el carácter `segundo` en ese lugar.

Video: C++ - #1 Estructuras de Datos Definición y declaración de variables struct

los * cuando se utiliza como significa un operador binario “multiplicar” - cuando se utiliza como un operador unario, * significa “encontrar lo señalado en por”. De igual & tiene un significado que un operador binario, sino como un operador unitario, que significa “tomar la dirección de”.

Entonces, ¿qué es tan interesante acerca de eso? Después de todo, se puede lograr el mismo efecto simplemente asignando una `segundo` a cSomeChar directamente:

cSomeChar = `B`-

Por qué pasar por la etapa intermedia de la recuperación de su dirección en la memoria? Debido a que hay varios problemas que pueden resolverse únicamente con punteros.

Artículos Relacionados