1 - Explique as diferenças entre a passagem por valor e a

Propaganda
1 - Explique as diferenças entre a passagem por valor e a passagem por referência
em uma função. Exemplifique com a função "dobro" feita em sala.
Passagem por valor: A função recebe uma cópia da variável que é passada quando for
chamada. As alterações são feitas dentro da função e não altera os valores originais.
#include<stdio.h>
//passagem de parametro por valor
int dobroValor(int num){
num=num*2;
return num;
}
//passagem de parametro por referencia
void dobroReferencia(int *num){
*num = 2*(*num);
}
void main(){
int num=10;
printf("\n Valor de num antes da chamada: %d\n",num); resposta: 10
dobroValor(num);// forma incorreta da pass. por valor
printf("\n Valor de num depois da chamada: %d\n",num); resposta: 10
printf("\n Valor de num antes da chamada: %d\n",num); resposta: 10
num=dobroValor(num);// forma correta da pass. por valor
// como uma variável está recebendo o valor retornado pela função sofrerá alteração.
printf("\n Valor de num depois da chamada: %d\n",num); resposta: 20
int num2=10;
printf("\n Valor de num antes da chamada: %d\n",num2); resposta: 10
dobroReferencia(&num2);// forma correta da pass. por valor
printf("\n Valor de num depois da chamada: %d\n",num2); resposta: 20
}
2 - Defina os conceitos de listas, pilhas e filas, destacando as principais diferenças
entre as mesmas.
Lista: conjuntos de elementos, objetos, variáveis, tarefas ou qualquer coisa que se possa
enumerar e formar um conjunto.
Exemplo: Lista de compra.
Fila: FIFO “primeiro a chegar é o primeiro a sair”. A ordem de inserção e remoção de
objetos simula o empilhamento desses objetos.
Um nove elemento da fila somente pode ser inserido na último posição(fim da fila) e o
elemento só pode ser removido da primeira posição(inicio da fila).
Pilha: LIFO “último a entrar, primeiro a sair”. Insere-se elementos no topo da pilha e
remove-se ou utiliza-se o elemento que estiver no topo da pilha.
3 - Explique por que o tamanho de um ponteiro para int é o mesmo tamanho de um
ponteiro para char, uma vez que o tamanho de um int não é o mesmo tamanho de
um char.
O endereço é o mesmo tamanho e o que muda é o tamanho alocado na memória.
Cada objeto na memória do computador tem um endereço. Na maioria dos computadores,
o endereço de um objeto é o endereço do seu primeiro byte.
4 - Esquematize (com um desenho dos "quadradinhos") o endereçamento de
memória de uma estrutura do tipo "endereço_residencial", a qual contém: nome da
rua (ponteiro para char), numero da casa (inteiro), bairro (ponteiro para char) e
cidade (ponteiro para char). No mesmo esquema, explique para onde aponta um
ponteiro para esta estrutura. Por fim, mostre o tamanho (sizeof) desta estrutura,
explicando o porquê deste tamanho.
Char *Nome da rua
1356
Int Numero da casa
1895
Char *Bairro
1958
Char *Cidade
2840
Sempre que declaramos uma variável em C, estamos guardando, selecionando ou
alocando um espaço de bytes desses, e dependendo do tipo de variável, o tanto de
memória reservada varia.
Cada objeto na memória do computador ocupa um certo número de bytes consecutivos.
No meu computador, um char ocupa 1 byte, um int ocupa 4 bytes e um double ocupa
8 bytes.
A variável do tipo char *Bairro está armazenada no endereço 1958 e usa um byte de
memória. O compilador é que controla do local de armazenamento destas variáveis em
memória.
Quando um ponteiro (a variável) contém um determinado endereço, dizemos que
ele aponta para o endereço de memória. Além disso, se o valor deste ponteiro é o
endereço de uma outra variável qualquer, dizemos que tal ponteiro aponta para esta outra
variável.
5 - Explique quando devemos usar "." e quando devemos utilizar "->" para acessar
os membros de uma estrutura. Mostre um exemplo.
Uma struct consiste em vários dados agrupados em apenas um. Para acessar cada um
desses dados, usamos um ponto“.”para indicar que o nome seguinte é o nome do
membro.
Um ponteiro guarda o endereço de memória que pode ser acessado diretamente.
Download