2011-08-16 27 views

risposta

10

Il puntatore può essere riassegnato, l'array non può.

const char* ptr = "Hello World!"; 
const char arr[] = "Hello World!"; 

ptr = "Goodbye"; // okay 
arr = "Goodbye"; // illegal 

Inoltre, come altri hanno detto:

sizeof(ptr) == size of a pointer, usually 4 or 8 
sizeof(arr) == number of characters + 1 for null terminator 
+0

+1 Penso che questa sia una risposta più appropriata alla domanda data – Chad

5

primo è un puntatore.
Secondo è un array.

La dimensione di tutti i puntatori in un sistema sarà la stessa.
La dimensione dell'array nella seconda dichiarazione è uguale alla dimensione della stringa letterale più \0.

È possibile puntare il primo puntatore su qualsiasi altra variabile dello stesso tipo.
Non è possibile riassegnare la matrice.

2

Il primo è un puntatore: sizeof(myVar) == sizeof(void*). Non è costante, quindi è possibile modificarlo: myVar++.

Il secondo è un array: sizeof(myVar) == 13.

Problemi correlati