aula 190

Como criar um ponteiro para struct?

Dando continuidade ao nosso curso de programação com a linguagem C, vamos aprender nesta aula como criar um ponteiro para struct.

Toda variável está associada a uma região de memória. Assim, é possível obtermos o endereço de memória de qualquer variável e, consequentemente, criar um ponteiro para qualquer variável.

A partir do momento que criamos uma estrutura (struct), estamos criando um novo tipo de dado. Ou seja, agora podemos criar variáveis desse novo tipo de dado. Como toda variável está associada a uma região de memória, também podemos criar ponteiros para uma variável struct.

Imagine o novo tipo de dado Data, como a seguir:

typedef struct{
    int dia, mes, ano;
}Data;

Podemos criar uma variável do tipo Data e um ponteiro para uma Data assim:

    Data data;
    Data *p;

Agora podemos criar por exemplo um procedimento que recebe um ponteiro para uma Data e imprima esta data na tela, assim:

void imprimirData(Data *x){
    printf("%d/%d/%d\n", x->dia, x->mes, x->ano);
}

Dessa forma conseguimos imprimir o conteúdo da variável data que está na função main por meio de um ponteiro.

Código de exemplo completo em C

*/
          Aula 190: É possível ponteiro para struct?

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

typedef struct{
    int dia, mes, ano;
}Data;

void imprimirData(Data *x){
    printf("%d/%d/%d\n", x->dia, x->mes, x->ano);
}

int main(){

    Data data;
    Data *p;

    p = &data;

    printf("Endereco de data: %p\tConteudo de p: %p\n", &data, p);

    data.dia = 29;
    data.mes = 2;
    data.ano = 2021;

    imprimirData(p);

    printf("%d/%d/%d\n", data.dia, data.mes, data.ano);

    return 0;
}

Deixe um comentário

4 + 9 =

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.