[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: freq_ABB
Daniel Cukier writes:
> >> > 2. Não entendi bem o processo que cria um nó novo:
> >> >
> >> > s_aux = (char *) malloc(strlen (s) + 1);
> >> > strcpy(s_aux, s);
> >> > t->palavra = s_aux;
> >> >
> >> > Não poderia usar t->palavra direto no lugar de s_aux, ja que os dois
> >> > são do mesmo tipo e vão acabar apontando para a mesma cadeia?
> >>
> >> Eles nao apontam para a "mesma" cadeia. Fazemos uma copia de s em s_aux.
> >> Isto é importante, como acredito que mencionei em sala. Caso não
> >> fizéssemos uma copia de s, quando fizéssemos a leitura da proxima
> >> palavra (em s!) perderiamos a palavra lida anteriormente.
> >
> >Tudo bem, desde que ela esteja armazenada em t->palavra, não?
>
> O que acontece é que t->palavra é apenas um APONTADOR, ou seja, não se
> armazena um STRING nele e sim UM ENDEREÇO onde essa string se encontra.
> O processo ocorre da seguinte maneira:
>
> s é lido. Digamos que s seja "YOSHI" (não que eu esteja puxando o saco)
> Quando fazemos t->palavra = s, t->palavra conterá um apontador o "Y", no
> caso, o primeiro caractere da string. Ao lermos uma próxima palavra, t->
> palavra continuará apontando para s, ou seja, a nova palavra. Não é o que
> queremos. Queremos ARMAZENAR todas as palavras.
>
> Para isso, usa-se o malloc, que aloca um pedaço da memória onde ele colocará
> a palavra. Esse "pedaço" da memória está associado ao apontador s_aux, que
> aponta novamente para o 1o. caractere do espaço de memória alocado. Ao se
> definir t->palavra = s_aux, estamos dizendo que a palavra que queremos ter
> para t está no endereço de memória alocado anteriormente.
>
> Será que as coisas estão mais claras agora. Eu, pra dizer a verdade, estou
> começando só AGORA a entender essa filosofia de apontadores e alocações de
> memória. Isso é realmente novo para que estava acostumado com Pascal ou
> qualquer outra linguagem de mais alto nível.
A discussao sobre linguagens é certamente muito ampla. Aqui estao algumas
paginas de interesse:
Pagina do Kernighan
http://cm.bell-labs.com/who/bwk/
que contem os seguintes links:
(1) sobre o livro de C (K&R):
http://cm.bell-labs.com/cm/cs/cbook/index.html
(2) um artigo de Kernighan sobre Pascal:
Why Pascal is Not My Favorite Programming Language (April, 1981); dois
formatos:
http://www.cs.bell-labs.com/cm/cs/cstr/100.ps.gz
http://www.ime.usp.br/~anr/misc/pascal.txt
Tem também a pagina do Ritchie:
http://www.cs.bell-labs.com/who/dmr/
com o link
`The Development of the C Language', 1993:
http://cm.bell-labs.com/cm/cs/who/dmr/chist.html
Yoshi
> A linguagem C tem muitas
> peculiaridades. Com certeza, todo mundo do BCC vai achar ridículo de fácil
> essas peculiaridades. Mas isso no futuro (pelo menos para aqueles que estão
> começando agora). Eu mesmo, pra dizer a verdade tenho muitas dificuldades em
> C. Eu consigo ler um programa inteirinho e entendo ele, depois de algumas
> repetições de leitura. Mas ainda tenho muita dificuldade em escrever. Nunca
> sei se o que estou fazendo é a melhor coisa, se existe alguma maneira mais
> fácil de escrever algum comando, enfim, estou apanhando feio do C.
> As vezes acho que posso fazer uma analogia com a língua falada. Por exemplo,
> muita gente entende bastante Inglês, mas na hora de falar é um gago de
> primeira. Isso é só insegurança e falta de prática. Com o tempo e com a
> prática adquiri-se segurança. É só isso que a gente precisa: um pouco mais
> de tempo pra poder se acostumar com o maravilhoso mundo de C.
>
> Falou!
>
> Daniel Cukier
> danicuki@linux.ime.usp.br
> dcukier@colband.com.br
> danicuki@base.com.br
> >
> >--
> >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >Tiago Minchillo da Silveira
> >Kiron Multimídia - http://www.kiron.com.br
> >Homepage pessoal em construção!!! Em breve divulgo o endreço.
> >Nick no IRC/ICQ: Duke Jeffrie - UIN: 9350490
> >~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- References:
- Re: freq_ABB
- From: "Daniel Cukier" <dcukier@ppp1.colband.com.br>