? Donald Knuth , atualmente um professor emérito de "The Art of Computer Programming " na Universidade de Stanford, disse em 1974 que ele considerou variáveis de ponteiro " para estar entre os tesouros mais valiosos da ciência da computação . " No entanto , mais de três décadas depois, os ponteiros são ainda confuso para muitos programadores iniciantes. Além disso , os programadores costumam usar ponteiros incorretamente, para que o código não funciona como planejado ea questão se torna ainda mais nebuloso e confuso. Um ponteiro é para endereços
Ponteiros são variáveis que contém o endereço de outra variável , assim, eles " ponto " para a outra variável. Programadores são normalmente confortável com a idéia de variáveis - por exemplo, uma variável "x ", contendo o valor de 25. Um ponteiro para "x" indica onde o valor de 25 é armazenado na memória. Imprimir o conteúdo de uma variável ponteiro iria exibir um endereço de memória , tradicionalmente impressos em hexadecimal. Imprimir o conteúdo de "x" seria exibido 25. O endereço de uma variável não é muito diferente do conceito de uma carta com um endereço impresso no envelope. O endereço diz o carteiro onde entregar o envelope. O conteúdo do envelope são separados a partir do endereço . O endereço de uma variável é onde na memória o conteúdo de uma variável são armazenados.
Declaração
A declaração de um ponteiro é específico para a linguagem de programação. Por exemplo, a afirmação " flutuar y = 25,5, * pointer_to_y = &y; " declara e inicializa um ponto flutuante "y" variável e uma variável ponteiro. Imprimindo o valor de "y" renderia 25,5, enquanto imprime o valor de " pointer_to_y " renderia onde "y" é armazenado na memória .
Uso de ponteiros
< br >
Um lugar importante para os ponteiros é na entrada. Quando você pede que o usuário digite um número, você precisa armazenar esse número em algum lugar. Para contar a sua função de entrada onde armazenar o valor, você deve dar o endereço de uma variável , o que seria "& number_of_students " em C. Se você acabou de especificar " number_of_students ", você está falando sobre o valor atual armazenado na variável , como o conteúdo do envelope mencionado antes , ao invés de onde armazenar a entrada do usuário .
funções
é ineficiente para passar grandes quantidades de dados para funções. Ponteiros permitem que você passe , onde os dados são armazenados de que sua função precisa . Sua função pode acessar os dados necessários sem a sobrecarga de passar os dados para a rotina.
Estruturas de dados complexas
problemas de programação avançadas exigem soluções avançadas de programação e tipos de dados . Os programadores não podem facilmente resolver todos os problemas com inteiro simples , ponto flutuante e tipos de dados de caracteres. Os programadores usam listas ligadas muitas vezes em programas , especialmente ao ordenar conjuntos complexos de dados. Uma lista ligada é simplesmente uma coleção de dados, como o nome de um funcionário, ID e taxa de pagamento , armazenados em uma estrutura de dados . Além dos dados do empregado , cada estrutura de dados contém um apontador para a estrutura de dados seguinte na lista . Reorganizando os registros de empregados é uma questão de reorganizar os ponteiros , ao invés de ter que se deslocar grandes quantidades de dados em torno de simplesmente reordenar a lista.