Dúvida em alguns exemplos do PIC Programação em C.

Opiniões / comentarios sobre livros

Moderador: 51

Dúvida em alguns exemplos do PIC Programação em C.

Mensagempor regiscruz » 20 Mar 2008 11:57

Pesoal, por favor me ajudem a entender melhor...

1) A página 120 mostra dois exemplos de como se referir ao endereço de uma matriz.
Código: Selecionar todos
&nota[0]
//ou
nota
É necessário usar o & na frente do segundo exemplo de referencia como mostram os exemplos anteriores?


2) Na página 123 exemplo 8.4 na última linha não é necessário um "*" na frente da variável ponteiro? Ou pelo fato de se tratar de uma matriz isso não é necessário?digo assim...
Código: Selecionar todos
*ponteiro[1]=20;


3) No exemplo de definição de estrutura da pagina 124 diz que a variável de estrutura "horario" é uma variável mas na pagina 125 no primeiro exemplo diz que a estrutura vai ocupar apenas 3 Bytes sendo que foram declaradas três variáveis mais a variável de estrutura. Afinal, quantas posições de memória foram ocupadas? 3 como diz no texto ou 4 contando com a variável de estrutura "horario"?
Código: Selecionar todos
struct tempo
{   int horas;
     int minutos;
     int segundos
}horário;


Obrigado a todos.
Existem três leis que governam o mundo...
A Lei da gravidade, a Lei do mais forte e a lei de Murphy.
Avatar do usuário
regiscruz
Byte
 
Mensagens: 154
Registrado em: 21 Out 2006 10:22
Localização: Uberaba - MG

Mensagempor xultz » 20 Mar 2008 15:05

1 -> Não, o que está no livro está certo. Eu acho isso uma certa chatisse do C, mas com o tempo você se acostuma. Declarar uma matriz tipo int nota[10] é o mesmo que criar um ponteiro para uma variavel int e separar mais 10 posições de memória (do tamanho de int) para esta matriz.
Assim, nota passa a ser um ponteiro, da mesma forma quando você declara um ponteiro (e não matriz) tipo int *aluno
Cara, acredite, ponteiro é confuso mesmo e demora a aprender. Eu sei acho que menos de 50% do que deveria saber sobre ponteiros.

2 -> Eu não tenho o livro em mãos, mas pelo descrito acima, você pode ter uma idéia.

3 -> Imagine o seguinte: você tem três caixas, cada caixa tem 1 metro cubico (ou 1 m3). Daí você pega uma caixa que tem 3 m3, e cabem nela exatamente as três caixa de 1 m3 cada. Essa caixa é feita de um material muito fino. No final, com a caixa grande e as três caixas pequenas, quantos m3 você tem? 3, né?
Então, a idéia é exatamente a mesma. No CCS, um int ocupa 1 byte (não me pergunte o motivo, qualquer compilador usa int como no mínimo 2 bytes, mas isso é outra conversa). Aí você declara uma estrutura com três ints dentro. Quantos bytes ocupa a estrutura? 3 somente. O que o compilador faz com a "horario"? Ele é uma referência ao ponteiro que aponta para o primeiro elemento da estrutura, ou seja, horas.

Eu sei que você deve estar com dúvidas ainda, não hesite em perguntar, se eu souber, eu respondo. Se eu não souber, alguém vai responder, porque o asm51 é o lugar certo.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor regiscruz » 20 Mar 2008 15:51

Certo xultz, primeiramente obrigado...

Beleza, deu uma clareada boa mas agora sua terceira resposta me formou outra dúvida.

Quer dizer então que se eu quiser por exemplo fazer um buffer de recepção (FIFO) não tem diferença nenhuma entre eu usar uma matriz (ex: buffer[10]) ou uma estrutura ambos manipulados através de ponteiro?
Aparentemente os dois são iguais com excessão de que na estrutura vc pode nomear os elementos, correto?

Obrigado
Existem três leis que governam o mundo...
A Lei da gravidade, a Lei do mais forte e a lei de Murphy.
Avatar do usuário
regiscruz
Byte
 
Mensagens: 154
Registrado em: 21 Out 2006 10:22
Localização: Uberaba - MG

Mensagempor xultz » 20 Mar 2008 17:57

Exato, é mais por uma questão de comodidade.
è muito mais fácil declarar algo do tipo
int bufer[10];
do que
struct buffer {
int primeiro_dado;
int segundo_dado;
int terceiro_dado;
;;
} buffer;
98% das vezes estou certo, e não estou nem aí pros outros 3%.
Avatar do usuário
xultz
Dword
 
Mensagens: 3001
Registrado em: 13 Out 2006 18:41
Localização: Curitiba

Mensagempor regiscruz » 20 Mar 2008 23:47

Beleza, valew....
Existem três leis que governam o mundo...
A Lei da gravidade, a Lei do mais forte e a lei de Murphy.
Avatar do usuário
regiscruz
Byte
 
Mensagens: 154
Registrado em: 21 Out 2006 10:22
Localização: Uberaba - MG


Voltar para Livros

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x