• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

iCl4w

[Dúvida] Asterisco

13 mensagens neste tópico

Olá Usuários do PaP.org,

Lendo o C - Completo e Total do Herbert Schildt, me deparei com esse código:

is_in (char *s, char c)
{
while(*s)
if(*s == c) return 1;
else s++;
return 0;
}

Pode parecer bobagem, mais o que é o asterisco? Em outros códigos observo:

char s[90];

Só um exemplo. Qual a diferença? O que indica o asterisco?

Agradeço desde já...

Abçs...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o * indica q é um ponteiro. Pesquisa no google o q são Ponteiros em C.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Melhor, irei dar uma olhada no livro C - Completo e Total. Obrigado pela resposta.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Fazes bem. O * assim só a olhar para código parece uma coisa esquisita e complicada.

Mas se leres uma boa explicação sobre o q são os ponteiros ficas a perceber isso e depois até vais achar q fazem todo o sentido.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Agradeço muito a ajuda.

O video parece ser muito explicativo, até demais! Mas, n sou bom com inglês falado. Faltou a legenda.

Procurei outros vídeos, mas sobre ponteiro tinha 9 aulas de quase 10min cada. Sem noção...

Mas, eu gostaria de tirar a dúvida baseado no que li:

O tipo de dado que o ponteiro aponta, no caso char, é chamado o tipo base do ponteiro. De qualquer forma, a variável ponteiro é uma variável que mantém o endereço de um objeto do tipo base. Logo, um ponteiro para caractere é de tamanho suficiente para guardar um endereço como definido pela arquitetura do computador em que está rodando.

- Retirado de: C - Completo e Total. Schildt, Herbert

Ou seja, o que é um ponteiro? Esse trecho diz que eu posso armazenar a quantidade disponível na memória na variável char? Tipo:

char *ch;

O que quer dizer isso? O livro fala que isso é muito importante, por isso insisto!

Ajudem-me por favor...

Agradeço desde já...[/code]

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É exactamente o q está no texto em cima.

Isto significa q c é um ponteiro de chars.

Se fizeres char *c = "olá";

ficas com c a apontar para a primeira posição do array "olá";

[100] 'o'        <-------  c aponta para aqui.

[101] 'l'

[102] 'á'

[103] '\0'

(100, 101, ... são as posições de memoria (na realidade serão outras))

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aí é que está,

Por que isso é importante ao programar em C?

Por que não apenas

char ch;

?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

char *c e char c são coisas diferentes.

char *c = char c[ ];

A tua afirmação faz tanto sentido como dizer:

Porque é q em C# existe int[ ] array_inteiros? Porque é que não existe só int inteiro?

Os ponteiros em C são de extrema utilidade, e só ao inicio é q fazem confusão, depois vais ver q fazem sentido.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Deixa-me que te diga que um livro em C que dá exemplos com apontadores sem os referir antes não é lá grande livro...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Realmente!

Observo que o C - Completo e Total tem esse defeito crasso! Ele fala demais no início, o que só faz o leitor se encher de dúvidas. Ao menos, ele fala em que capítulo achar a resposta, embora que pra entender precise conhecer os outros capítulos! Tem muita coisa estranha para um principiante.

Então, irei seguir vossos conselhos e estudar mais. Como disseram, terei a resposta em breve...

Agradeço muito a ajuda de vcs...

Abçs...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se é uma boa explicação, Rui Carlos? Ela é ótima!

Era isso que procurava saber.

Em vez de se usar um nome para identificar um pedaço da memória, usa-se directamente o endereço dessa zona de memória para a identificar e chama-se a esse endereço apontador. Diz-se que o apontador aponta ou refere para uma determinada zona de memória.

Para perceber melhor as possibilidades dos apontadores vamos definir agora um segundo apontador, y a fazê-lo apontar para a variável v:

      int *y = x ;

Obtém-se a seguinte situação:

http://ctp.di.fct.unl.pt/lei/ipc/teoricas/images/pointer2.jpg

Muito bom! Obrigado!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora