Ponteiros C ++

Os ponteiros C ++ são fáceis e divertidos de aprender. Algumas tarefas C ++ são realizadas mais facilmente com ponteiros, e outras tarefas C ++, como alocação de memória dinâmica, não podem ser realizadas sem eles.

Como você sabe, cada variável é um local da memória e cada local da memória tem seu endereço definido, que pode ser acessado usando o operador E comercial (&) que denota um endereço na memória. Considere o seguinte, que imprimirá o endereço das variáveis ​​definidas -

#include <iostream>

using namespace std;
int main () {
   int  var1;
   char var2[10];

   cout << "Address of var1 variable: ";
   cout << &var1 << endl;

   cout << "Address of var2 variable: ";
   cout << &var2 << endl;

   return 0;
}

Quando o código acima é compilado e executado, ele produz o seguinte resultado -

Address of var1 variable: 0xbfebd5c0
Address of var2 variable: 0xbfebd5b6

O que são ponteiros?

UMA pointeré uma variável cujo valor é o endereço de outra variável. Como qualquer variável ou constante, você deve declarar um ponteiro antes de trabalhar com ele. A forma geral de uma declaração de variável de ponteiro é -

type *var-name;

Aqui, typeé o tipo base do ponteiro; deve ser um tipo C ++ válido evar-nameé o nome da variável de ponteiro. O asterisco que você usou para declarar um ponteiro é o mesmo asterisco que você usa para a multiplicação. No entanto, nesta declaração, o asterisco está sendo usado para designar uma variável como um ponteiro. A seguir estão as declarações de ponteiro válidas -

int    *ip;    // pointer to an integer
double *dp;    // pointer to a double
float  *fp;    // pointer to a float
char   *ch     // pointer to character

O tipo de dados real do valor de todos os ponteiros, seja inteiro, flutuante, caractere ou outro, é o mesmo, um número hexadecimal longo que representa um endereço de memória. A única diferença entre ponteiros de diferentes tipos de dados é o tipo de dados da variável ou constante para a qual o ponteiro aponta.

Usando ponteiros em C ++

Existem algumas operações importantes, que faremos com os ponteiros com muita freqüência. (a) Definimos uma variável de ponteiro. (b) Atribuir o endereço de uma variável a um ponteiro. (c)Finalmente acesse o valor no endereço disponível na variável de ponteiro. Isso é feito usando o operador unário * que retorna o valor da variável localizada no endereço especificado por seu operando. O exemplo a seguir faz uso dessas operações -

#include <iostream>

using namespace std;

int main () {
   int  var = 20;   // actual variable declaration.
   int  *ip;        // pointer variable 

   ip = &var;       // store address of var in pointer variable

   cout << "Value of var variable: ";
   cout << var << endl;

   // print the address stored in ip pointer variable
   cout << "Address stored in ip variable: ";
   cout << ip << endl;

   // access the value at the address available in pointer
   cout << "Value of *ip variable: ";
   cout << *ip << endl;

   return 0;
}

Quando o código acima é compilado e executado, ele produz um resultado como o seguinte -

Value of var variable: 20
Address stored in ip variable: 0xbfc601ac
Value of *ip variable: 20

Ponteiros em C ++

Os ponteiros têm muitos conceitos fáceis e são muito importantes para a programação C ++. Seguem alguns conceitos de ponteiro importantes que devem ser claros para um programador C ++ -

Sr. Não Conceito e descrição
1 Ponteiros nulos

C ++ suporta ponteiro nulo, que é uma constante com valor zero definido em várias bibliotecas padrão.

2 Pointer Arithmetic

Existem quatro operadores aritméticos que podem ser usados ​​em ponteiros: ++, -, +, -

3 Ponteiros vs matrizes

Existe uma relação estreita entre ponteiros e matrizes.

4 Array of Pointers

Você pode definir matrizes para conter uma série de ponteiros.

5 Ponteiro para Ponteiro

C ++ permite que você tenha um ponteiro sobre um ponteiro e assim por diante.

6 Passando ponteiros para funções

Passar um argumento por referência ou por endereço permite que o argumento passado seja alterado na função de chamada pela função chamada.

7 Return Pointer from Functions

C ++ permite que uma função retorne um ponteiro para a variável local, variável estática e memória alocada dinamicamente.