Buscar

Passando Estruturas Inteiras para Funções: Quando uma estrutura é usada como argumento para uma função, a estrutura inteira é passada usando-se o m...

Passando Estruturas Inteiras para Funções: Quando uma estrutura é usada como argumento para uma função, a estrutura inteira é passada usando-se o método padrão de chamada por valor (passagem de parâmetro por cópia). Isso, obviamente, significa que qualquer mudança feita no conteúdo de uma estrutura dentro da função para qual ela é passada não afeta a estrutura usada como argumento. A consideração mais importante para se ter em mente quando se usa uma estrutura como parâmetro é que o tipo do argumento deve corresponder ao tipo do parâmetro. Por exemplo, este programa declara o argumento arg e o parâmetro parm para serem do mesmo tipo de estrutura: para ser um ponteiro para dados daquele tipo: struct endereço *ponteiro_endereço; Usando Ponteiros para Estruturas: Existem muitos usos para ponteiros para estruturas. Um deles é na obtenção de uma chamada por referência para uma função. Outro é na criação de estruturas dinâmicas (listas, filas, pilhas, árvores, etc.). Existe uma desvantagem maior em passar tudo, até a mais simples estrutura, para funções: o esforço necessário para levar (e trazer) todos os campos da estrutura para a pilha. Em estruturas simples, com poucos campos, esse esforço não é tão importante, mas, se muitos campos são usados e se algum deles é matriz, a performance de tempo de execução pode se tornar inaceitável. A solução para esse problema é passar somente um ponteiro para estrutura. Quando um ponteiro para estrutura é passado para uma função, somente o endereço da estrutura é empurrado (e puxado) para a pilha. Isso significa que uma chamada de função extremamente rápida pode ser executada. Também, como estará referenciando a estrutura em si e não uma cópia, a função terá condições de modificar o conteúdo dos campos da estrutura usada na chamada. Para encontrar o endereço de uma variável estrutura, o operador & é colocado antes do nome da variável estrutura. Por exemplo, dado este fragmento struct sal{ float saldo; char nome[80]; } cliente; struct sal *p; // declaração de um ponteiro para estrutura coloca o endereço de cliente no ponteiro p. Para acessar o campo saldo, você pode escrever (*p).saldo Você raramente verá, se vir, referências feitas a um campo de uma estrutura com uso explícito do operador *, como mostrado no exemplo anterior. Uma vez que o acesso a um campo de uma estrutura por meio de um ponteiro para a dada estrutura é tão comum, um operador especial definido pela linguagem C realiza esta tarefa. Ele é o ->, chamada de operador seta. Ele é formado utilizando-se o sinal de menos seguido por um sinal de maior que. A seta é usada no lugar do operador ponto, quando se acessa um campo da estrutura utilizando-se um ponteiro para a variável estrutura. Por exemplo, a declaração anterior é usualmente escrita assim: p->saldo Para ver como um ponteiro para uma estrutura pode ser usado, examine este programa simples que imprime horas, minutos e segundos na sua tela, usando uma rotina de espera cronometrada:

Uma estrutura é passada como argumento para uma função usando o método padrão de chamada por valor.
Quando uma estrutura é passada como argumento para uma função, qualquer mudança feita no conteúdo da estrutura dentro da função não afeta a estrutura usada como argumento.
A solução para o problema de performance de tempo de execução ao passar uma estrutura para uma função é passar somente um ponteiro para estrutura.
Quando um ponteiro para estrutura é passado para uma função, somente o conteúdo da estrutura é empurrado (e puxado) para a pilha.
O operador -> é usado no lugar do operador ponto quando se acessa um campo da estrutura utilizando-se um ponteiro para a variável estrutura.
a) Somente as afirmativas 1, 2 e 3 estão corretas.
b) Somente as afirmativas 2, 3 e 5 estão corretas.
c) Somente as afirmativas 1, 3 e 5 estão corretas.
d) Somente as afirmativas 2, 4 e 5 estão corretas.
e) Todas as afirmativas estão corretas.

Essa pergunta também está no material:

Faculdade_de_Ciencias_Aplicadas_de_Casca (1)
154 pág.

Ciências Aplicadas Universidade Estácio de SáUniversidade Estácio de Sá

Respostas

User badge image

Ed Verified user icon

A alternativa correta é a letra C) Somente as afirmativas 1, 3 e 5 estão corretas.

0
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Responda

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta

User badge image