Declarar punteros; ¿Asterisco a la izquierda o derecha del espacio entre el tipo y el nombre? [duplicar]
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.
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 somePtr
es 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 somePtr
es 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.
No importa. Alguien vendrá ahora y cerrará la pregunta como un incauto, y otro mostrará cómo el int* a
camino se rompe si declaras múltiples variables en las mismas declaraciones mientras int *a
refleja mejor la estructura sintáctica del código, y otro mostrará que Stroustrup prefiere el int* a
forma y mantiene el tipo junto en el lado izquierdo.
Muchas opiniones, pero no hay una forma "correcta" aquí.
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.