Anda di halaman 1dari 2

www.tiexpert.

net

Pg. 1 de 2

Ponteiro de Struct
Vimos a pouco como criar uma estrutura de dados agrupado (struct), como definir um nome essa estrutura com typedef e como criar um ponteiro para indicar um endereo de memria. Agora, vamos nos aprofundar um pouco mais nesse assunto vendo como procedemos com um ponteiro de struct. Como vimos anteriormente, um struct consiste em vrios dados agrupados em apenas um. Para acessarmos cada um desses dados, usamos um ponto (.) para indicar que o nome seguinte o nome do membro. Um ponteiro guarda o endereo de memria que pode ser acessado diretamente. O problema aqui est no seguinte, como acessaremos um membro de uma estrutura de dados usando um ponteiro? Pois simples. Para isso, basta usarmos o que chamamos de "seta". A "seta" consiste de um sinal de menos e um maior (->). Portanto, podemos criar nosso struct do mesmo jeito de sempre e nosso ponteiro tambm. Mas, quando formos acessar um membro dessa estrutura usando um ponteiro ns no usaremos um ponto, mas uma seta. Vejamos: #include <iostream> #include <cstdlib> using namespace std; typedef struct data Data; struct data { short dia; short mes; int ano; }; int main Data Data hoje (void){ data; //varivel data do tipo struct data *hoje; //ponteiro hoje para um tipo struct data = &data; //hoje aponta para o endereo de data

//dados sendo inseridos na varivel data hoje->dia = 20; hoje->mes = 1; hoje->ano = 2009; //mostrando o que est gravado no endereo contido em hoje cout << "Data registrada:"<<endl; cout << hoje->dia <<"/"<< hoje->mes <<"/"<< hoje->ano << endl; system ("pause"); } Agora, h mais uma maneira de acessarmos um membro da estrutura usando um ponteiro. Esta outra forma consiste em indicar de qual ponteiro nos referimos colocando o dereferenciador entre parenteses, assim (*hoje). Dessa forma podemos acessar diretamente usando um ponto (.). No exemplo abaixo usamos apenas ponteiros com dereferenciador para escrever no struct data.

http://www.tiexpert.net/programacao/c/ponteiro-struct.php

www.tiexpert.net
#include <iostream> #include <cstdlib> using namespace std; typedef struct data Data; struct data { short dia; short mes; int ano; }; int main Data Data hoje (void){ data; //varivel data do tipo struct data *hoje; //ponteiro hoje para um tipo struct data = &data; //hoje aponta para o endereo de data inseridos na varivel data 20; 1; 2009;

Pg. 2 de 2

//dados sendo (*hoje).dia = (*hoje).mes = (*hoje).ano =

//mostrando o que est gravado no endereo contido em hoje cout << "Data registrada:"<<endl; cout << (*hoje).dia <<"/"<< (*hoje).mes <<"/"<< (*hoje).ano << endl; system ("pause"); } Concluindo, podemos acessar um membro de um tipo de dado estrutura de dado usando ponteiro de duas formas: Usando um dereferenciador entre parnteses e um ponto (.) para indicar o membro. Usando o prprio ponteiro e uma seta (->) para indicar o membro.
Autor: Denys William Xavier Este artigo est sob Licena Creative Commons Para ver uma cpia desta licena, visite http://creativecommons.org/licenses/by-nc-sa/2.5/br/ ou envie uma carta para Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.

http://www.tiexpert.net/programacao/c/ponteiro-struct.php

Anda mungkin juga menyukai