Ponteiro C ++ aritmético

Ponteiro C ++ aritmético

Sabemos que os ponteiros são endereços de memória de variáveis ​​e são numéricos em geral. É por isso que podemos fazer alguns cálculos aritméticos nos ponteiros também. Esses cálculos podem ser feitos da mesma forma que nos valores numéricos em matemática ou programação. Portanto, discutiremos algumas operações aritméticas nos ponteiros do nosso guia de tutorial usando C++. Temos usado o Ubuntu 20.04 Sistema, certificando -se de ter o compilador G ++ configurado nele. Vamos começar com a implementação da aritmética do ponteiro no Ubuntu 20.04 Sistema do terminal do sistema com a ajuda de um atalho Ctrl+alt+t usado em sua área de trabalho.

Exemplo 1:

Comece o primeiro exemplo de código C ++ para usar os operadores aritméticos "+" em ponteiros por criação de arquivos. Você pode criar um arquivo de várias maneiras, mas o mais simples é o uso da instrução "Touch". Assim, tentamos a palavra -chave de toque junto com o título de um arquivo a ser formado no console e pressionado Enter. O arquivo é criado no Ubuntu 20.04 Pasta Home.

Agora, para abrir este arquivo recém-criado, você pode usar qualquer um dos editores internos que vêm com o Ubuntu 20.04 i.e. Vim, editor de texto ou editor da GNU Nano. Sugerimos que você use o editor do GNU Nano, pois o usamos no shell, como demonstrado na imagem abaixo.

Este arquivo “ponteiro.CC ”está solto no editor até agora. Incluímos o arquivo de cabeçalho do fluxo de entrada e saída na primeira linha e o espaço para nome padrão foi usado na segunda linha. Inicializamos uma variável inteira "V" com um valor de 8. Na próxima linha consecutiva, inicializamos um ponteiro do tipo inteiro “P”. Este ponteiro é o endereço de uma variável "V", pois está vinculada pela variável "V" usando o sinal "&". Isso significa que podemos mudar o endereço de um mutável a qualquer momento. As declarações cout padrão foram usadas uma após a outra. O primeiro é exibir o endereço original da variável "V" salva como o ponteiro "P".

Na linha seguinte, a declaração cout tem aumentando o endereço do ponteiro por 1 e exibindo -o. As próximas duas linhas estão usando o ponteiro e incrementando seu valor em 2 e 3. Os valores incrementados foram exibidos com a declaração cout. O código termina aqui. Vamos salvar o código primeiro antes da execução. Use Ctrl+S para esse fim. Você tem que sair do editor do GNU Nano para voltar para o terminal. Utilize a chave de atalho "Ctrl+X" para esse fim. Este foi o código C ++ mais simples para incrementar o ponteiro usando o operador+.

Depois de voltar ao shell, temos que tornar nosso código livre de erros. O compilador C ++ é usado para essa perseverança. A palavra -chave do compilador “g ++” foi usada junto com o nome de um arquivo a ser compilado i.e. “Ponteiro.CC ”. A compilação é bem -sucedida, pois você pode ver que não retorna nada. Vamos executar nosso código livre de erros usando o ”./a.OUT ”comando padrão. Temos os 4 endereços diferentes para a variável "V".

O primeiro é o endereço original "P" da variável "V". O segundo é incrementado por 1, o terceiro é incrementado pelo valor 2 e o último é incrementado por 3. Toda vez, realizamos o incremento, os dois últimos caracteres de um endereço tendem a mudar como mostrado abaixo.

Exemplo 2:

Vamos fazer outro exemplo para usar o operador de decréscimo em um ponteiro. Então, estamos consumindo o mesmo arquivo antigo “Ponteiro.CC ”. O namespace e o cabeçalho de entrada e saída são usados ​​da mesma forma que antes. Outra variável inteira constante “s” é inicializada com um valor constante de 5. Dentro do método main (), usamos uma matriz do tipo inteiro chamada "V" de tamanho "s" com 5 elementos. O ponteiro inteiro “P” foi declarado. O ponteiro foi amarrado com a matriz inteira "V" usando o sinal "&".

O tamanho será iniciado no endereço S-1. O loop "for" foi inicializado, que é iniciado no tamanho 5 e funciona na ordem decrescente diminuindo em 1 a cada vez. Toda vez que o loop "for" funciona, exibe o endereço de memória do número de índice iterado pelo loop e pelo valor em um índice específico também usando a instrução Cout padrão. O "P" demonstra o endereço do índice, enquanto o *p representa o valor nesse índice específico. Em cada iteração, o ponteiro foi diminuído por 1. O loop termina aqui e a função principal também.

Compilar o código primeiro com o compilador G ++ da linguagem C ++. Funciona com sucesso sem erros. A execução é realizada pelo “./a.out ”comando. Temos a saída como mostrado abaixo. Você pode ver, temos cada endereço de memória para um índice específico i.e. 5,4,3,2,1 na ordem decrescente dos índices. Por outro lado, também recebemos os valores em cada índice particular toda vez que o loop itera na ordem decrescente até o último valor.

Exemplo 3:

Vamos ter uma nova instância de ponteiros. Dentro deste exemplo, compararemos os endereços de ponteiro, bem como os valores que eles contêm. Assim, o ponteiro do documento.CC agora é lançado no editor da GNU Nano. A função principal () foi inicializada após o espaço de nome padrão e o cabeçalho do fluxo "IO" no arquivo de código. Ele contém duas variáveis ​​de tipo de string s1 e s2 com valores de string completamente diferentes i.e. "Aqsa" e "Yasin".

Depois disso, inicializamos duas variáveis ​​de ponteiro do tipo string p1 e p2 delimitadas pelas duas variáveis ​​S1 e S2 usando o caractere "&" após o sinal "=". Isso significa que o ponteiro P1 é o endereço da variável s1 e p2 é o endereço da variável s2.

A primeira cláusula de cout padrão é usada para mostrar o resultado da comparação de ambos os ponteiros i.e. endereços de ambas as variáveis ​​de string. Se os endereços forem iguais, ele exibirá 1 como verdadeiro, caso contrário, como false no shell. A segunda cláusula de cout padrão é usada para exibir o resultado da comparação de valores armazenados no endereço de ponteiro específico. Se os valores forem iguais, ele retornará 1, caso contrário 0. O programa de comparação termina aqui.

Compile seu código C ++ primeiro e execute -o. Temos 0 como resultado das duas comparações i.e. falso. Isso significa que ambos os endereços de ponteiro e valores nesses endereços não são os mesmos.

Vamos mudar um pouco o código. Abra o mesmo arquivo e atualize os valores da string. As mesmas variáveis ​​de string s1 e s2 foram inicializadas com os mesmos valores i.e. Aqsa. O restante do código é usado inalterado como fizemos antes. Salve seu código para obter o resultado atualizado.

Temos 0 como resultado de comparação de endereços de ponteiro, pois ambas as variáveis ​​contêm diferentes endereços de memória e 1 como resultado da comparação de valor i.e. mesmos valores de ambas as cordas.

Conclusão:

Discutimos as operações aritméticas realizadas nos ponteiros. Utilizamos os operadores aritméticos de incremento e decrescente em ponteiros. Também discutimos os exemplos de bônus para ilustrar o funcionamento do operador de comparação em dois ponteiros diferentes.