Há diferença entre int vet*, int *vet e int* vet? Se sim, qual?

4 respostas
Omori
Pessoal, sou estudante de Computação e frequentemente vejo pessoas usando ponteiros de maneiras diferentes:

int vet* (com o asterisco após o nome da variável. Eu uso desta forma.)

int <em>vet(com o asterisco antes do nome da variável)

int</em> vet(asterisco após o tipo inteiro)

Queria saber se há de fato diferença entre essas maneiras ou se é apenas estilo de cada um ou alguma convenção. Caso haja, podem me explicar qual?

4 Respostas

confuso

Não há nenhuma diferença. São equivalentes.

lvbarbosa

Essa forma é inválida. O asterisco faz parte do tipo e, portanto, não pode vir após o nome da variável. Qual compilador você tá usando? No gcc e no clang isso aí não compila.

Essas duas são equivalentes.

wldomiciano

Vc poderia dar um exemplo de uso funcional dessa primeira versão?

int vet*

É que as outras versões são usadas na declaração de variáveis e funcionam perfeitamente e são equivalentes (é apenas questão de estilo), mas quando eu uso o * após o nome da variável dá erro de compilação.

int a = 123;  // ok
int* x = &a;  // ok
int *y = &a;  // ok
int * z = &a; // ok
int w* = &a;  // erro de compilação
Omori

Gente, foi um equívoco meu. Me distraí. Uma pessoa falava comigo enquanto digitava o código. Eram somente estas duas últimas formas. Desculpem ^-^’. Obrigado pelo esclarecimento.

Criado 23 de março de 2019
Ultima resposta 1 de abr. de 2019
Respostas 4
Participantes 4