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. |