[Prévia cron] [Próxima Cron] [Prévia por assunto] [Próxima por assunto]
[Índice cronológico] [Índice de assunto] [Índice de autor]

Re: estrelinhas



>nao to entendendo aquela notacao de usar um struct** numa funcao?
qual a diferenca?isso nao foi explicado em aula...

    Se você se "concentrar muito" em ver os dois asteriscos, fica realmente
confuso... Acho sempre mais fácil pensar que uma coisa do tipo "int** a",
por exemplo, pode ser lida como "int* a[]", isto é, uma matriz de "int*".
Ora, por sua vez, "int* b" pode ser entendido como "int b[]" (matriz de
ints). Resumindo: "int** a" é uma matriz de matrizes de int, como disse o
Demerson.

    Mas tem um outro significado importante: se você passar apenas um
pointer para uma struct em uma função, significa que você pode até mexer no
conteúdo desta struct, mas não no pointer propriamente dito. Se, no entanto,
passar um pointer-pointer, poderá alterá-lo também. Na prova de hoje, aquela
função para remover o ímpar poderia ser feita basicamente de duas maneiras:

ligacao RemoveImpar(ligacao primeiro)
{
  // ou seja, você recebe um pointer, mas como não pode modificá-lo,
  // tem de devolver um pointer para o novo primeiro elemento
}

ou

void RemoveImpar(ligacao *primeiro)
{
  // ou seja, você recebe um pointer para o pointer, podendo
  // então modificá-lo diretamente
}

este último equivale a

void RemoveImpar(struct no** primeiro)
{
}

Rubens