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

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 vet(com o asterisco antes do nome da variável)
int
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?

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

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.

2 curtidas

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
1 curtida

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.

1 curtida