Dada a seguinte estrutura e definições de variável,

struct cliente {

char nome[ 15 ];

char sobrenome[ 15 ];

int numCliente;

struct {

char telefone[ 11 ];

char endereço[ 50 ];

char cidade[ 25 ];

char estado[ 2 ];

char cep[ 8 ];

} pessoal;

} regCliente, *ptrCliente;

ptrCliente = &regCliente;

escreva uma expressão que possa ser usada para acessar os membros da estrutura em cada uma das partes a seguir:

a) Membro sobrenome da estrutura regCliente.

b) Membro sobrenome da estrutura apontada por ptrCliente.

c) Membro nome da estrutura regCliente.

d) Membro nome da estrutura apontada por ptrCliente.

e) Membro numCliente da estrutura regCliente.

f) Membro numCliente da estrutura apontada por ptrCliente.

g) Membro telefone do membro pessoal da estrutura regCliente.

h) Membro telefone do membro pessoal da estrutura apontada por ptrCliente.

i) Membro endereço do membro pessoal da estrutura regCliente.

j) Membro endereço do membro pessoal da estrutura apontada por ptrCliente.

k) Membro cidade do membro pessoal da estrutura regCliente.

l) Membro cidade do membro pessoal da estrutura apontada por ptrCliente.

m) Membro estado do membro pessoal da estrutura regCliente.

n) Membro estado do membro pessoal da estrutura apontada por ptrCliente.

o) Membro cep do membro pessoal da estrutura regCliente.

p) Membro cep do membro pessoal da estrutura apontada por ptrCliente.

Passo 1

Saalve, tranquilo?

Vamos lá programar?!

Passo 2

Os membros da estrutura podem ser acessados através do operador ponto (.) se o acesso é uma variável da estrutura ou através do operador flecha (->) se o acesso é um apontador segurando a referência da variável da estrutura.

A questão tem uma estrutura com a estrutura dada dentro da estrutura principal. As regras pedem o acesso da estrutura como:

1. Os membros de uma estrutura aninhada são uma parte da estrutura principal se a estrutura aninhada é anônima, isso é se a estrutura não tem o mesmo nome e não tem variável declarada da estrutura aninhada. Nesse caso, os membros da estrutura aninhada podem ser acessados diretamente através da variável da estrutura principal.

2. Se a estrutura aninhada não é anônima então, os membros de dado da estrutura aninhada precisam ser acessadas através da variável da estrutura aninhada.

Passo 3

a) para acessar o sobrenome da estrutura cliente, usamos o operador (.) como:

consumidor.sobrenome

Passo 4

b) para acessar o sobrenome da estrutura apontado para o consumidor usamos o operador assim:

ptrCliente ->sobrenome

A seguinte estrutura que usa o operador de ponto para acessar o sobrenome também pode ser usada:

* ptrCliente .sobrenome

Os parênteses são porque o operador de ponto tem um maior precedente do que o apontador *

Passo 5

c) para acessar o nome da estrutura regCliente, usamos o operador de ponto:

regCliente.nome

Passo 6

d) para acessar o nome da estrutura apontado para ptrCliente, usamos o apontador da estrutura (->)

ptrCliente ->nome

A seguinte estrutura usa o operador de ponto para acessar o nome:

* ptrCliente .nome

Os parênteses são porque o operador de ponto tem um maior precedente do que o apontador *

Passo 7

e) para acessar o nome numCliente da estrutura regCliente usamos o operador de ponto como:

regCliente.numCliente

Passo 8

f) para acessar o numCliente da estrutura apontada para ptrCliente, usamos o apontador (->):

ptrCliente -> numCliente

A estrutura usa o operador de ponto para acessar o numCliente:

* ptrCliente . numCliente

Os parênteses são porque o operador de ponto tem um maior precedente do que o apontador *

Passo 9

g) a estrutura pessoal é uma estrutura aninhada dentro da estrutura regCliente.

Para acessar o telefone de um membro pessoal da estrutura regCliente, usamos o operador de ponto como:

regCliente.pesssoal.telefone

Passo 10

h) para acessar o telefone do membro pessoal da estrutura apontado para o ptrCliente usamos a estrutura apontador (->) como:

ptrCliente -> pessoal.telefone

Passo 11

i) para acessar o endereço de um membro pessoal da estrutura regCliente, usamos o operador de ponto como:

regCliente.pessoal.endereço

Passo 12

j) para acessar o endereço do membro pessoal da estrutura apontada para o ptrCliente, usamos a estrutura de apontador (->) como:

regCliente -> pessoal.endereço

Passo 13

k) para acessar a cidade dos membros da estrutura pessoal regCliente, usamos operador de ponto como:

regCliente.pessoal.cidade

Passo 14

l) para acessar a cidade dos membros da estrutura pessoal ptrCliente, usamos operador apontador (->) como:

regCliente -> pessoal.cidade

Passo 15

m) para acessar o estado dos membros da estrutura pessoal regCliente, usamos operador de ponto como:

regCliente.pessoal. estado

Passo 16

n) para acessar o estado dos membros da estrutura pessoal ptrCliente, usamos operador apontador (->) como:

regCliente -> pessoal. estado

Passo 17

o) para acessar o cep dos membros da estrutura pessoal regCliente, usamos operador de ponto como:

regCliente.pessoal. cep

Passo 18

p) para acessar o cep dos membros da estrutura pessoal ptrCliente, usamos operador apontador (->) como:

regCliente -> pessoal. cep

Resposta

Ei, a resposta está no passo a passo :)