Olá,
eu gostaria de saber qual a diferença entre um ponteiro com apenas um asterisco com um com mais de um. Por exemplo:
[code]int main(int argc, char** argv) // dois asteriscos
int main(int argc, char* argv) // um asterisco[/code]
Obrigado.
Olá,
eu gostaria de saber qual a diferença entre um ponteiro com apenas um asterisco com um com mais de um. Por exemplo:
[code]int main(int argc, char** argv) // dois asteriscos
int main(int argc, char* argv) // um asterisco[/code]
Obrigado.
Cada * aumenta um grau de “indirection”. Por exemplo, char *p é um ponteiro para char, char **p é um ponteiro para ponteiro para char, e assim por diante.
(Em particular, na declaração do método main, não se recomenda usar char **argv e sim const char *argv[], que representa melhor a intenção de termos um array de ponteiros para const char *. )
Dois asteriscos designam um ponteiro para um ponteiro.
Em C, sabemos que uma string é um array de caracteres, que pode ser declarado como char[] ou char*. A última forma é um ponteiro apontando para o primeiro caractere da string.
E se quisermos um array de strings? O array é um conjunto de char*. A variável que armazena o array de strings precisa apontar para o primeiro elemento do array, que é do tipo char*. Daí temos um ponteiro para um ponteiro, que é declarado da forma char**.
[quote=entanglement]Cada * aumenta um grau de “indirection”. Por exemplo, char *p é um ponteiro para char, char **p é um ponteiro para ponteiro para char, e assim por diante.
(Em particular, na declaração do método main, não se recomenda usar char **argv e sim const char *argv[], que representa melhor a intenção de termos um array de ponteiros para const char *. )
[/quote]
Entendi. Obrigado a todos pelas respostas.
entanglement, desculpe, postamos quase ao mesmo tempo e não tinha visto sua resposta.
Foi complementar.