prova

prova

por roberta smolka adena -
Número de respostas: 4
oi...
gostaria de saber até que conteúdo cai na prova...

Obrigado e bom fim de feriado à todos.
Em resposta à roberta smolka adena

Re: prova

por Francisco Reverbel -
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:
  1. detalhes sobre a função scanf;
  2. funções getchar e putchar;
  3. redirecionamento de entrada e de saída.
Em resposta à roberta smolka adena

Duvida-prova

por Rebeca Bayeh -

Estou confusa perplexo

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?

Em resposta à Rebeca Bayeh

Re: Duvida-prova

por Rodrigo Cordeiro Godoy -
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.