Declarando um ponteiro em c ++

UMA Caracteres variável em C ++ é projetado para manter um caractere ASCII, um int um número inteiro, e um Duplo um número de ponto flutuante. Da mesma forma, uma variável ponteiro é projetado para armazenar um endereço de memória. Declarar uma variável ponteiro através da adição de um asterisco (*) para o fim do tipo de objecto que os pontos de ponteiro em, como no exemplo a seguir:

Video: Programar em C - Declarar Vetores - Aula 23

char * PChar - // ponteiro para uma characterint * pInt- ponteiro // para um int

Uma variável ponteiro que de outra forma não foi inicializado contém um valor desconhecido. Usando o comercial (&) Operador, você pode inicializar uma variável de ponteiro com o endereço de uma variável do mesmo tipo:

caractere cSomeChar = `A`-char * PChar-PChar = &cSomeChar-

Neste trecho, a variável cSomeChar tem algum endereço. Por causa do argumento, dizer que C ++ atribuiu a 0x1000 endereço. (C ++ também inicializado nesse local com o personagem `uma`.) A variável PChar também tem uma localização própria, talvez 0x1004. O valor da expressão &cSomeChar é 0x1000, e o seu tipo é Caracteres* (Leia-se “ponteiro para Caracteres“).

Assim, a atribuição da terceira linha do exemplo de trecho armazena a 0x1000 valor na variável PChar.

Tome um minuto para realmente compreender a relação entre a figura e as três linhas de código C ++ no trecho. A primeira declaração diz: “sair e encontrar uma localização de 1 byte na memória, atribuir-lhe o nome cSomeChar, e inicializar-lo para `uma`.”Neste exemplo, C ++ colhidos a 0x1000 localização.

A próxima linha diz, “sair e encontrar um local suficientemente grande para conter o endereço de um Caracteres variável e atribuir-lhe o nome PChar.”Neste exemplo, C ++ atribuído PChar ao 0x1004 localização.



A terceira linha diz: “atribuir o endereço de cSomeChar (0x1000) para a variável PChar.”A figura representa o estado do programa após estas três afirmações.

"Então, o que você diz. Aqui vem a parte realmente legal, como demonstrado na seguinte expressão:

* PChar = `b`-

Esta linha diz: “loja de um ‘B’ no Caracteres localização apontada por PChar.”Isto é demonstrado na figura seguinte. Para executar esta expressão, C ++ primeiro recupera o valor armazenado em PChar (Que seria 0x1000). Em seguida, ele armazena o personagem ‘B’ naquele local.

o * quando usado como um operador binário significa “multiplicar” - quando usado como um operador unário, * significa “encontrar a coisa apontada para perto.” Da mesma forma & tem um significado como um operador binário, mas como um operador unário, que significa “tirar o endereço do”.

Assim que é tão emocionante sobre isso? Afinal, você pode conseguir o mesmo efeito simplesmente designando um ‘B’ para cSomeChar diretamente:

cSomeChar = `b`-

Por que passar pela etapa intermediária de recuperar seu endereço na memória? Porque há vários problemas que podem ser resolvidos apenas com ponteiros.


Publicações relacionadas