2011-08-16 22 views

Respuesta

10

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 
+0

+1 Creo que esta es una respuesta más adecuada a la pregunta formulada – Chad

5

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.

2

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.

Cuestiones relacionadas