Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // https://www.scriptbrasil.com.br/forum/topic/82398-estrutura-com-ponteiros-operador-seta/
- //#define caso1
- #define caso2
- struct tvalor
- /*tvalor e o nome da estrutura*/
- {
- int var1;
- int var2;
- int var3;
- } valores = {10, 20, 30};
- void setup() {
- Serial.begin(115200);
- }
- void loop() {
- #ifdef caso1
- printf ("Mostre o valor do item de dado var1: %d\n", valores.var1, "\n");
- printf ("Mostre o valor do item de dado var2: %d\n", valores.var2, "\n");
- printf ("Mostre o valor do item de dado var3: %d\n", valores.var3, "\n");
- printf ("\n");
- #endif
- #ifdef caso2
- tvalor* pvalores = &valores; //Declaração e inicialização de um ponteiro
- /*
- Um ponteiro é uma variável que guarda o endereço de outra
- variável. Com ponteiros você tem acesso direto a memória Heap,
- ganho em desempenho e entre outras vantagens.
- */
- // pvalores->var1 *= 2;
- // pvalores->var2 *= 2;
- // pvalores->var3 *= 2;
- /*
- Como um ponteiro guarda o endereço da variável, o conteúdo do ponteiro
- é o endereço da variável apontada por ele. Mas um ponteiro pode ter acesso
- ao valor da variável apontada por ele. Para ter acesso ao valor da variável
- que está sendo apontada, use o operador '*'. Exemplo:
- int x = 10;
- int* p = &x; //Aponte para 'x'
- int y = *p: //Pegue o conteúdo de x, 10. Já que p está apontando x.
- int* p2 = p;
- //Aponte para 'x', já que p guarda o endereço de 'x', que é
- //o conteúdo de p (observe a ausência de '*')
- OBS: o operador '&' é para pegar o endereço da variável indicada, como
- em 'int* p = &x'
- Bom, no caso de uma estrutura você faria (para pegar o valor de um dete
- rminado membro. Lembre: pvalores é um ponteiro que aponta para valores):
- (*pvalores).var1
- Porém, é trabalhoso essa sintaxe. A cada vez que precisar de pegar o valor
- de um membro, não use a sintaxe acima (não que esteja errado, mas é trabalhoso).
- Aí que entra o operador '->'. É um atalho.
- pvalores->var1 //Ou (*pvalores).var1
- */
- // printf ("visualizacao de itens de dados de uma estrutura na tela:","\n");
- // printf ("\n");
- // printf ("\n");
- printf ("Mostre o valor do item de dado var1: %d\n",valores.var1,"\n");
- printf ("Mostre o valor do item de dado var2: %d\n",valores.var2,"\n");
- printf ("Mostre o valor do item de dado var3: %d\n",valores.var3,"\n");
- printf("Mostre o valor do item de dado var3: %d\n", pvalores->var3,"\n");
- printf ("\n");
- //Repare que através do ponteiro foi modificado a estrutura.
- // Já que o ponteiro pvalores apontava para valores
- #endif
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement