Declarar punteros; ¿Asterisco a la izquierda o derecha del espacio entre el tipo y el nombre? [duplicar]

Resuelto jakogut asked hace 14 años • 6 respuestas

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 mucho código. (Esto se aplica a C y C++, por cierto). La gente parece declarar punteros de dos maneras, y no tengo idea de cuál es la correcta, ni siquiera de si importa.

La primera forma es colocar el asterisco junto al nombre del tipo, así:

someType* somePtr;

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

someType *somePtr;

Esto me ha estado volviendo loco desde hace algún tiempo. ¿Existe alguna forma estándar de declarar punteros? ¿Importa siquiera cómo se declaran los punteros? He usado ambas declaraciones antes y sé que al compilador no le importa de qué manera sea. 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 por saber si alguno de los métodos es más legible o lógico de alguna manera que me falta.

jakogut avatar Apr 18 '10 07:04 jakogut
Aceptado

Es una cuestión de preferencia y una especie de guerra santa, al igual que el estilo de corsé.

El estilo "C++"

someType* somePtr;

está enfatizando el tipo de variable de puntero. Básicamente, dice "el tipo de somePtres puntero a- someType".

El estilo "C"

someType *somePtr;

está enfatizando el tipo de datos señalados. Básicamente, dice "el tipo de datos al que apunta somePtres someType".

Ambos significan lo mismo, pero depende de si el modelo mental de un programador determinado al crear un puntero está "centrado", por así decirlo, en los datos apuntados o en la variable del puntero.

Ponerlo en el medio (como someType * somePtr) es intentar evitar comprometerse con cualquiera de los dos.

Tyler McHenry avatar Apr 18 '2010 00:04 Tyler McHenry

No importa. Alguien vendrá ahora y cerrará la pregunta como un incauto, y otro mostrará cómo el int* acamino se rompe si declaras múltiples variables en las mismas declaraciones mientras int *arefleja mejor la estructura sintáctica del código, y otro mostrará que Stroustrup prefiere el int* aforma y mantiene el tipo junto en el lado izquierdo.

Muchas opiniones, pero no hay una forma "correcta" aquí.

Johannes Schaub - litb avatar Apr 18 '2010 00:04 Johannes Schaub - litb

No importa, es preferencia personal.

A algunas personas les gusta mantener el tipo junto:

int* p;

Otras personas dicen que debería ir al lado de la variable por lo siguiente:

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

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

Brian R. Bondy avatar Apr 18 '2010 00:04 Brian R. Bondy