CriandoBits
Identifique-se Entrar Esqueceu a senha? Esqueci minha senha

C/C++ - Ponteiros

Por Benedito Silva Júnior - publicado em 20/06/2016


Em programação, um ponteiro ou apontador é um tipo de dado de uma linguagem de programação cujo valor se refere diretamente a um outro valor alocado em outra área da memória, através de seu endereço. Um ponteiro é uma simples implementação do tipo referência da Ciência da computação.

Ponteiros são uma abstração da capacidade de endereçamento fornecidas pelas arquiteturas modernas.

Em termos simples, um endereço de memória, ou índice numérico, é definido para cada unidade de memória no sistema, no qual a unidade é tipicamente um byte ou uma word, o que em termos práticos transforma toda a memória em um grande vetor. Logo, a partir de um endereço, é possível obter do sistema o valor armazenado na unidade de memória de tal endereço.

O ponteiro é um tipo de dado que armazena um endereço.

Na maioria das arquiteturas, um ponteiro é grande o suficiente para indexar todas as unidades de memória presentes no sistema. Isso torna possível a um programa tentar acessar um endereço que corresponde a uma área inválida ou desautorizada da memória, o que é chamado de falha de segmentação.

Por outro lado, alguns sistemas possuem mais unidades de memória que endereços. Nesse caso, é utilizado um esquema mais complexo para acessar diferentes regiões da memória, como o de segmentação ou paginação.

Abaixo é mostrado o conceito de ponteiros usando a linguagem c:

int main() { //declaração das variáveis int num1 = 10; int num2 = 20; // os valores de 'num1' e 'num2' são, respectivamente, 10 e 20 cout << "O valor da variavel 'num1' eh " << num1 << endl; cout << "O valor da variavel 'num2' eh " << num2 << endl; // mostra as posições em memória onde as variáveis 'num1' e 'num2' estão cout << "A posicao em memoria da variavel 'num1' eh " << &num1 << endl; cout << "A posicao em memoria da variavel 'num2' eh " << &num2 << endl; //declaração de variáveis de ponteiro int* pNum1; int* pNum2; //'&' significa "pegue o endereço de" //'*' significa "encontre a coisa indicada por" pNum1 = &num1;//var. ponteiro 'pNum1' aponta para endereço de memória da var. 'num1' pNum2 = &num2;//var. ponteiro 'pNum2' aponta para endereço de memória da var. 'num2' cout << "Confirmando a posicao em memoria da variavel 'num1' eh " << pNum1 << endl; cout << "Confirmando a posicao em memoria da variavel 'num2' eh " << pNum2 << endl; *pNum1 = 50;//armazena valor 50 na posição em memória indicada pelo ponteiro 'pNum1' *pNum2 = 80;//armazena valor 80 na posição em memória indicada pelo ponteiro 'pNum2' //Agora os valores de 'num1' e 'num2' serão, respectivamente, 50 e 80 cout << "Agora o valor da variavel 'num1' eh " << num1 << endl; cout << "Agora o valor da variavel 'num2' eh " << num2 << endl; return 0; }


 
Voltar a pagina anteriorVoltarSubir ao topo da páginaTopo