Eventuali duplicati:
Difference between using character pointers and character arraysconst char * myVar vs. const char myVar []
Qual è la differenza tra:
const char* myVar = "Hello World!";
const char myVar[] = "Hello World!";
Se c'è una?
Eventuali duplicati:
Difference between using character pointers and character arraysconst char * myVar vs. const char myVar []
Qual è la differenza tra:
const char* myVar = "Hello World!";
const char myVar[] = "Hello World!";
Se c'è una?
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
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.
Il primo è un puntatore: sizeof(myVar) == sizeof(void*)
. Non è costante, quindi è possibile modificarlo: myVar++
.
Il secondo è un array: sizeof(myVar) == 13
.
+1 Penso che questa sia una risposta più appropriata alla domanda data – Chad