[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Poucas respostas e muitas perguntas de MAC 122...



Paulo Eduardo A. Silveira writes:
 > Primeiro umas respostas para o Jay e depois umas perguntas pro
 > professor...
 > Oi Jay...
 > Quanto ao primeiro problema eu nao sei, mas o scanf funciona assim...
 > scanf("%x", &variavel);
 > o xdepende do tipo de variavel que voce ta pegando... algumas:
 > i ou d para int
 > c para char
 > f para float
 > lf para double (nao tenho certeza se e lf)
 > s para string (vetor de char)
 > e variavel logicamente eh o nome da variavel que voce quer armazenar o
 > dado obtido...
 > 
 > Ja o fscanf e para ler de um arquivo (todo comando parecido com os de
 > entrade e saida para tela que tem F na frente (f de file) trabalha com
 > arquivos)
 > E igualzinho ao scanf, so que tem um argumento antes, esse argumento eo
 > nome da variavel ponteiro que esta apontando para o arquivo (no caso do
 > programa e a variavel arquivo)

Outra coisa que está sendo usada no programa ex11: o scanf() e o fscanf()
devolvem um inteiro cujo valor é o número de valores que foram lidos com
sucesso. 

 > Agora eu e que tenho uma pergunta para o professor ou para quem possa me
 > ajudar:
 > Num momento do programa o professor usa o comando calloc, queria saber se
 > e o mesmo que o malloc so que multiplicado N vezes, sendo n o primeiro
 > argumento, eh isso?

Sim.  A unica diferença é que o calloc() inicializa a memoria alocada com
zeros. 

 > Em outro lugar o professor escreveu ptr=els, isto siginifica que ptr vai
 > "apontar" para mesma alocacao de memoria que els?

Sim.  Estas duas variáveis (alocadas em duas celulas de memoria distintas)
passam a conter o mesmo endereco.

 > Se isso eh correto, quando voce escreve ptr++, voce esta apontando para
 > els[1] (fingindo que eh uma matriz, so para exemplificar), e porque nao
 > poderia ser escrito els++ ao inves de ptr++?

els++ altera o valor de els.  Imagino que eu queria alterar o valor de ptr
(fazer ele apontar para o proximo objeto), mas nao o de els.  

Sobre els[1], veja este exemplo:

#include <stdio.h>

main()
{
  int v[5]={0, 1, 2, 3, 4};
  int *p;
  p=&v[2]; /* p passa a apontar para o endereco de v[2] */ 
  printf("%d %d %d %d %d\n", v[0], v[1], *p, *(p+1), p[2], 3[p]);
}

 > Ja que essa "els" eh tipo de um vetor de estrutura, na hora de declarar
 > els eu nao poderia escrever:
 > struct elemento **els;

Assim ele nao executa a alocacao de memoria.  Apenas declara o apontador els.

 > Ai eu poderia usar malloc ao inves de calloc e alem disso nao precisaria
 > usar a estrutura ponteiro, e mais, poderia utilizar a notacao els[x], que
 > facilita muito para entender o programa, nao? Ou o professor fez iss para
 > a gente aprender ponteiro melhor (que, aqui entre nos, eh um saco, nao?)

Ponteiros, alocacao dinamica, etc sao muito coooool... voce vai passar a
amá-los!  Y.

 > Alguem pode me ajudar?
 > FaloWWW
 > 
 > Bye
 > peas
 > 
 >  -------------------------------------
 >  Paulo Eduardo A. Silveira  
 >  Undergraduating in Computer Science
 >  University of Sao Paulo - IME
 >  http://www.linux.ime.usp.br/~peas
 >  -------------------------------------