Duplicar posibles:
Difference between using character pointers and character arraysconst char * miVar vs const char miVar []
¿Cuál es la diferencia entre:
const char* myVar = "Hello World!";
const char myVar[] = "Hello World!";
Si hay uno?
Duplicar posibles:
Difference between using character pointers and character arraysconst char * miVar vs const char miVar []
¿Cuál es la diferencia entre:
const char* myVar = "Hello World!";
const char myVar[] = "Hello World!";
Si hay uno?
El puntero puede reasignarse, la matriz no puede.
const char* ptr = "Hello World!";
const char arr[] = "Hello World!";
ptr = "Goodbye"; // okay
arr = "Goodbye"; // illegal
También, como otros han dicho:
sizeof(ptr) == size of a pointer, usually 4 or 8
sizeof(arr) == number of characters + 1 for null terminator
En primer lugar es un puntero.
Segundo es una matriz.
El tamaño de todos los punteros en un sistema será el mismo.
El tamaño de la matriz en la segunda declaración es igual que el tamaño del literal de cadena más el \0
.
Puede señalar el primer puntero a cualquier otra variable del mismo tipo.
No puede reasignar la matriz.
El primero es un puntero: sizeof(myVar) == sizeof(void*)
. No es constante, por lo que puede modificarlo: myVar++
.
La segunda es una matriz: sizeof(myVar) == 13
.
+1 Creo que esta es una respuesta más adecuada a la pregunta formulada – Chad