¿Puede decirme por favor la diferencia entre int* p
y int *p
declaración?Diferencia entre int * p e int * p declaración
Respuesta
Hay sin diferencia.
Es una cuestión de notación , no semántica. La segunda es menos engañosa, porque
int *a, b;
está declarando claramente un int*
y un int
, mientras que
int* a, b;
parece como si se trata de declarar dos punteros, cuando es realmente haciendo lo mismo que el anterior .
Las dos declaraciones son equivalentes al declarar un único puntero. Para un poco más en esto vea link
Es una buena pregunta.
int* p
- ampliamente utilizado por los programadores de C++
int* p, q
implica erróneamente que tantop
yq
son punteros (que conduce a una preferencia para la declaración de este en dos líneas, que también mejora la legibilidad cuando hay son asignaciones, y hace que sea más fácil cortar/pegar rápidamente o comentar líneas/variables específicas)int* p
separe visualmente Ates el tipo del identificador*p
a continuación indica de manera inequívoca una falta de referencia (suponiendo que pones espacios alrededor de su binariooperator*
ala2 * 3
)- en C++
...&x
está tomando claramente una dirección, mientras que...& x
debe declarar una variable de referencia, y... & ...
es el bit a bit-operador AND
int *p
- utilizan ampliamente d por los programadores de C
int *p, q
claramente reflejap
siendo un puntero yq
que no es.int *p
confunde visualmente el tipo con el identificador- visualmente indistinguible de una referencia a un puntero (para mejor o peor)
mismo modo para los tipos que aparecen en las declaraciones de funciones ...
int* f(), g(); // declares int g();
int *h(), (*i)(); // i is pointer to function returning int
int *const*m(), n(); // m returns pointer to (const-pointer to int)
// n returns int
...pero al menos los argumentos de función no pueden ponerse tan peludos: la especificación de tipo comienza de nuevo después de cada separador de coma.
Sumariamente, int *p
es mejor si su estilo/código-base de codificación utiliza múltiples declaraciones en una sola línea de código fuente, de lo contrario int* p
ofrece una separación más clara de tipo y el siguiente identificador.
Por todo eso, las preferencias de las personas se basan principalmente en lo que están acostumbrados.
¡esas 2 declaraciones son exactamente iguales!
- 1. sobre "int const * p" y "const int * p"
- 2. int (* p) [4]?
- 3. Diferencia entre const char * p y const char * p
- 4. ¿Es esto legal C/C++? `Int * p = (int []) {1,2,3};`
- 5. Diferencia entre int e INT recibida por Parseint en Java
- 6. ¿Cuál es la diferencia entre int [] [] e int [,]?
- 7. P en constante declaración
- 8. ¿Diferencia entre void main e int main?
- 9. ¿Diferencia entre long e int en C#?
- 10. diferencia entre int * i y int * i
- 11. Diferencia entre int * i y int ** i
- 12. ¿Cuál es la diferencia entre int * ptr e int * ptr en C?
- 13. ¿Cuál es la diferencia entre size_t e int en C++?
- 14. ¿Cuáles son las diferencias entre usar int [] [] e int [,]?
- 15. ¿Cuál es la diferencia (cuando se aplica a mi código) entre INT (10) e INT (12)?
- 16. ¿Cuál es la diferencia entre double a = a + int b e int a + = double b?
- 17. ¿Cuál es la diferencia entre "short int" e "int" en C?
- 18. ¿Cuál es la diferencia entre int x = 1 e int x (1) en C++?
- 19. ¿Hay alguna diferencia entre int & a y int & a?
- 20. ¿Cuál es la diferencia entre 'int'? y 'int' en C#?
- 21. Diferencia entre extern int a; extern int a = 42;
- 22. ¿Son "div> p" y "div p" iguales?
- 23. Diferencia entre p en una vista de carriles y puts
- 24. Diferencia entre char a [] = "cadena"; char * p = "cadena";
- 25. ¿Por qué el compilador requiere `delete [] p` versus` delete p [] `?
- 26. Añadiendo char e int
- 27. Manipulación de espacio duro: <p> </p> vs. <p></p>
- 28. Diferencia entre uint y unsigned int?
- 29. Diferencia entre int, NSInteger y NSUInteger
- 30. decimal (s, p) o número (s, p)?
buena explicación – cc4re