Ling. C - Qual é a diferença entre ponteiros com um asterisco e com vários? [Resolvido]

5 respostas
Andre_Rosa

Olá,

eu gostaria de saber qual a diferença entre um ponteiro com apenas um asterisco com um com mais de um. Por exemplo:

int main(int argc, char** argv) // dois asteriscos

int main(int argc, char* argv) // um asterisco

Obrigado.

5 Respostas

E

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 *. )

tnaires

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**.

Andre_Rosa

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 *. )

Entendi. Obrigado a todos pelas respostas.

tnaires

entanglement, desculpe, postamos quase ao mesmo tempo e não tinha visto sua resposta.

Andre_Rosa

Foi complementar. :wink:

Criado 18 de julho de 2011
Ultima resposta 18 de jul. de 2011
Respostas 5
Participantes 3