oi...
gostaria de saber até que conteúdo cai na prova...
Obrigado e bom fim de feriado à todos.
Já dei esta informação na aula de hoje, mas vou colocá-la também aqui. Assim mesmo quem faltou na aula fica informado.
Cai toda matéria vista até agora, menos os seguintes tópicos da aula de 24/10:
Cai toda matéria vista até agora, menos os seguintes tópicos da aula de 24/10:
- detalhes sobre a função scanf;
- funções getchar e putchar;
- redirecionamento de entrada e de saída.
Estou confusa
Sobre ponteiros...
quando eu faço um programa em que um ponteiro receber outro... se estiver no main, não uso asteriscos, senão o compilador reclama. Mas dentro de qualquer outra função, preciso colocar. Por exemplo:
int main(){
int a, b, c, *p, *q;
a=2;
p = &a;
q = p; /*ponteiro recebe outro ponteiro, sem asterisco*/
}
mas dentro de uma função, como a que foi passada em aula:
void troca(int *x, int *y){
int tmp;
tmp = *x;
*x = *y; /*uso de asteriscos*/
*y = temp;
}
Porque isso acontece?
Rebeca, vale a pena notar que as variáveis p e a são de "tipos" diferentes. A variável a é um int, e p é um ponteiro. Você pode ler & como "endereço de" e * como "a coisa apontada por". Portanto para se você quer, por exemplo, mudar a variável a usando p, você precisaria fazer deste modo:
a = 1;
p = &a;
*p = 2;
Deste modo, a variável a ficará com o valor 2. Você leria "a recebe 1, p recebe o endereço de a, a coisa apontada por p recebe 2".
Ali onde você mostrou que está q = p o que você está fazendo é passando o endereço de a para q também. Já na função troca mostrada você já tem dois endereços diferentes em cada uma das variáveis x e y então você pode escrever "a coisa apontada por x recebe a coisa apontada por y".
No seu main se você quisesse, poderia fazer o seguinte:
a = 1;
b = 2;
p = &a;
q = &b;
*p = *q;
Deste modo o a, de 1, passaria a valer 2.
Um ponteiro sem ser "inicializado" com o "endereço de" outra variável não pode ser usado com o asterisco, pois você estaria chamando "a coisa apontada por" sem ele estar realmente apontando para algo.
a = 1;
p = &a;
*p = 2;
Deste modo, a variável a ficará com o valor 2. Você leria "a recebe 1, p recebe o endereço de a, a coisa apontada por p recebe 2".
Ali onde você mostrou que está q = p o que você está fazendo é passando o endereço de a para q também. Já na função troca mostrada você já tem dois endereços diferentes em cada uma das variáveis x e y então você pode escrever "a coisa apontada por x recebe a coisa apontada por y".
No seu main se você quisesse, poderia fazer o seguinte:
a = 1;
b = 2;
p = &a;
q = &b;
*p = *q;
Deste modo o a, de 1, passaria a valer 2.
Um ponteiro sem ser "inicializado" com o "endereço de" outra variável não pode ser usado com o asterisco, pois você estaria chamando "a coisa apontada por" sem ele estar realmente apontando para algo.
Entendi!
muito obrigada, Godoy!