La declaración de un puntero en C ++

LA Char 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ñado 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 con la dirección de una variable del mismo tipo:

Char cSomeChar = 'a'-char * PChar-PChar = cSomeChar-

En este fragmento, la variable cSomeChar tiene cierta dirección. Por el amor de argumento, decir que C ++ le asignó la dirección 0x1000. (C ++ también inicializa esa ubicación con el carácter 'la'.) La variable PChar también tiene un lugar propio, quizá 0x1004. El valor de la expresión cSomeChar es 0x1000, y su tipo es char * (leer " puntero a Char").

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

imagen0.jpg

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 'la'." En este ejemplo, C ++ recogió el 0x1000 ubicación.

La siguiente línea dice: " salir y encontrar un lugar lo suficientemente grande para contener la dirección de un Char variable y asignarle el nombre PChar." En este ejemplo, C ++ asignado 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.

" # 148 Entonces, ¿qué?; tu dices. Aquí viene la parte realmente fresco, como se demuestra en la siguiente expresión:

* PChar = 'B'-

Esta línea dice: " almacenar un 'b' en el Char lugar apuntado por PChar." Esto se demuestra en la figura siguiente. Para ejecutar esta expresión, C ++ primero recupera el valor almacenado en PChar (que sería 0x1000). A continuación, almacena el carácter 'b' en ese lugar.

image1.jpg

los * cuando se utiliza como un medio de operadores binarios " multiplican " - cuando se utiliza como un operador unario, * medio " encontrar lo apuntado por ". Del mismo modo tiene un significado como un operador binario, sino como un operador unario, significa “, tomar la dirección del ".

Entonces, ¿qué es tan emocionante sobre eso? Después de todo, se puede lograr el mismo efecto simplemente asignando un 'b' 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 se pueden resolver solamente con punteros.




» » » » La declaración de un puntero en C ++