Declarando punteros; asterisco a la izquierda o a la derecha del espacio entre el tipo y el nombre?

Posibles duplicados:
¿Qué tiene más sentido: char * string o char * string? Declaraciones de puntero en C ++: colocación del asterisco

He visto versiones mixtas de esto en muchos códigos. (Por cierto, esto se aplica a C y C ++.) La gente parece declarar punteros de una de dos maneras, y no tengo idea de cuál es correcto, de si importa.

La primera forma de poner el asterisco junto al nombre del tipo, así:

someType* somePtr; 

La segunda forma es poner el asterisco junto al nombre de la variable, así:

 someType *somePtr; 

Esto me ha estado volviendo loco durante algún tiempo. ¿Hay alguna forma estándar de declarar punteros? ¿Incluso importa cómo se declaran los punteros? He usado ambas declaraciones antes, y sé que al comstackdor no le importa de qué manera. Sin embargo, el hecho de que haya visto punteros declarados de dos maneras diferentes me lleva a creer que hay una razón detrás de esto. Tengo curiosidad si alguno de los métodos es más legible o lógico de alguna manera que me falta.

Es una cuestión de preferencia, y algo así como una guerra santa, al igual que el estilo de corsé.

El estilo

 someType* somePtr; 

está enfatizando el tipo de variable de puntero. Está diciendo, esencialmente, “el tipo de somePtr es puntero-a- someType “.

El estilo

 someType *somePtr 

está enfatizando el tipo de datos apuntados. Está diciendo, esencialmente, “el tipo de datos apuntados por somePtr es someType “.

Ambos significan lo mismo, pero depende de si el modelo mental de un progtwigdor dado al crear un puntero está “enfocado”, por así decirlo, en los datos apuntados o en la variable del puntero.

Ponerlo en el medio (como someType * somePtr ) está tratando de evitar comprometerse con cualquiera de los dos.

No importa. Alguien ahora vendrá y cerrará la pregunta como un engañado, y alguien más mostrará cómo el int* a way se rompe si usted declara múltiples variables en las mismas declaraciones mientras el int *a refleja mejor la estructura sintáctica del código, y otro chico mostrará que Stroustrup prefiere el int* a manera.

Muchas opiniones, pero no de manera “correcta” aquí.

No importa, es una preferencia personal.

Algunas personas les gusta mantener el tipo juntos:

 int* p; 

Otras personas dicen que debe ir junto a la variable debido a lo siguiente:

 int *p, x;//declare 1 int pointer and 1 int int *p, *x;//declare 2 int pointers. 

Con el tiempo, pasará por alto esto y aceptará ambas variaciones.

La diferencia surgió porque C ++ agregó un sistema de tipo más fuerte además de C. El progtwigdor de CA por lo general piensa en términos de “valores”, por lo que

 int *pValue; 

lee “la desreferencia de pValue es una int” mientras que un progtwigdor de C ++ piensa en “tipos”, por lo que

 int* pValue; 

lee “el tipo pValue es puntero a int” El comstackdor no ve ninguna diferencia, por supuesto. Sin embargo, descubrirá que es el progtwigdor C quien insiste en la “semántica de valores” cuando progtwig en C ++.

Creo que poner el asterisco junto al nombre de la variable es más claro.

Podría declarar erróneamente someType* one, two; pensando que ambos son punteros pero solo la variable es un puntero; two es solo un someType . Declarar como someType *one, *two evita este problema.

Cada forma que he visto es

 TheType *myPointer 

porque está declarando un POINTER de tipo TheType. Declaración similar

 TheType myVar 

estaría declarando una variable de instancia de tipo TheType.

También puede hacer esto claramente y tenerlo fácilmente legible

 TheType myVar, *myPointer;