aula 184

O que é e como criar um ponteiro na linguagem C?

Nesta aula vamos iniciar um novo módulo em nosso Curso de Programação C, vamos começar a aprender sobre ponteiros. O que é e como criar um ponteiro na linguagem C.

Vamos à primeira pergunta: o que é um ponteiro?

Basicamente um ponteiro é uma variável qua guarda um endereço de memória, ou seja, um ponteiro, também chamado de apontador, possui como conteúdo o endereço de memória de outra variável. A princípio isso pode não fazer muito sentido, mas veremos mais a frente como este recurso é poderoso.

Respondendo a segunda pergunta: na linguagem C, basta utilizarmos um asterisco (*) à esquerda do identificador (nome) da variável para dizer que ela é um ponteiro.

Vamos a alguns exemplos para facilitar a compreensão.

No trecho de código a seguir temos uma variável do tipo int e um ponteiro para um int. A variável num armazena um número inteiro (10). Contudo, a variável p, que é um ponteiro para um inteiro (observe o * à esquerda), armazena um endereço de memória. Assim, a variável p aceita apenas endereços de memória e qualquer outra atribuição irá gerar um erro ao tentar compilar.

Para imprimir o conteúdo apontado por um ponteiro, basta utilizarmos o nome da variável com o asterisco, como feito na última linha, e será impresso o número 10. Perceba que 10 não é o valor da variável p. A variável p possui o endereço da variável num e o valor da variável num é 10.

    int *p, num = 10;
    
    p = 10; // atribuição inválida
    p = # // atribuição válida

    printf("Valor apontado por p: %d\n", *p);

No trecho de código a seguir temos uma variável do tipo char e um ponteiro para um char. A variável letra armazena um caracter ( f ). Contudo, a variável p, que é um ponteiro para um char (observe o * à esquerda), armazena um endereço de memória. Assim, a variável p aceita apenas endereços de memória e qualquer outra atribuição irá gerar um erro ao tentar compilar.

A última linha irá imprimir na tela o a letra f, que é o conteúdo apontado pela variável p.

    char *p, letra = 'f';
    
    p = 'a'; // atribuição inválida
    p = &letra; // atribuição válida

    printf("Valor apontado por p: %c\n", *p);

Podemos criar ponteiros para qualquer tipo de dado, inclusive novos tipos criados com typedef struct, mas lembre-se, uma variável ponteiro aceita apenas endereços de memória.

Código em C com um exemplo de criação e utilização de ponteiros.

*/

          Aula 184: O que é e como criar um ponteiro?

          Código escrito por Wagner Gaspar
          Maior de 2021
*/

int main(){

    char letra = 'f';
    char *p;

    p = &letra;

    printf("Valor de letra: %c\n", letra);
    printf("Endereco de letra: %p\n", &letra);
    printf("Valor de p: %p\n", p);
    printf("Endereco de p: %p\n", &p);
    printf("Valor apontado por p: %c\n", *p);

    return 0;
}

Deixe um comentário

4 + dezesseis =

Wagner Gaspar

Capixaba de São Gabriel da Palha, Espírito Santo. Bacharel em Ciência da Computação pela Universidade Federal do Amazonas e mestre em informática pela Universidade Federal do Espírito Santo.