Ho visto in molti post che "nella maggior parte dei casi i nomi degli array decadono in puntatori".
Posso sapere in quali casi/espressioni il nome dell'array non decadono in puntatori ai primi elementi?Eccezione alla matrice non decadente in un puntatore?
risposta
Sicuro.
In C99 ci sono tre casi fondamentali e precisamente:
quando è l'argomento del gestore
&
(indirizzo-di).quando si tratta dell'argomento dell'operatore
sizeof
.Quando è una stringa letterale di tipo
char [N + 1]
o un'ampia stringa letterale di tipowchar_t [N + 1]
(N
è la lunghezza della stringa) che viene utilizzato per inizializzare un array, come inchar str[] = "foo";
owchar_t wstr[] = L"foo";
.
Inoltre, nel C11, la recente introduzione alignof
operatore non consente il suo decadimento argomento di matrice in un puntatore o.
In C++, esistono regole aggiuntive, ad esempio, quando vengono passate per riferimento.
Mi dispiace, ma potresti spiegare il terzo caso in modo più chiaro? Voglio dire, non è il * str * nel terzo caso usato per riferirsi alla posizione di memoria della stringa? Quindi un puntatore di nuovo? –
@TheJoker No, sarebbe 'const char * str_ptr =" literal ";'. Nel mio esempio, 'str' è dichiarato come array, quindi ** è ** un array. –
@GrijeshChauhan Grazie :) –
- 1. Puntatore alla matrice come parametro di funzione
- 2. Utilizzo puntatore alla matrice nella pericoloso C#
- 3. Puntatore nullo Eccezione in ActionBar
- 4. Come si comporta il puntatore alla matrice di caratteri?
- 5. Eccezione puntatore Null avvio IntentService
- 6. .NET - Copia dalla matrice non gestita alla matrice non gestita
- 7. Eccezione puntatore nullo durante l'importazione di un carattere in Android
- 8. Matrice in C e il suo puntatore
- 9. Indice matematico puntatore vs. matrice
- 10. Eccezione alla regola del tre?
- 11. Il nome della matrice è un puntatore costante in C++?
- 12. C++ puntatore alla classe
- 13. Eccezione alla esportazione EventLog
- 14. C++, Fare un puntatore a una matrice char
- 15. Puntatore Marshalling a una matrice di stringhe
- 16. Ottenere la lunghezza di una matrice usando un puntatore
- 17. Eccezione puntatore null di sicurezza Spring
- 18. Java: eccezione puntatore nullo quando unboxing Integer?
- 19. convertito riferimento alla rappresentazione puntatore in C++
- 20. cosa succede se lancio (un puntatore alla classe A) a (un puntatore alla sottoclasse B) in C++
- 21. SQLiteOpenHelper.getWriteableDatabase() eccezione puntatore null su Android
- 22. Puntatore nullo Eccezione su file URI?
- 23. disegno Android Gradle biblioteca puntatore nullo eccezione
- 24. Elimina puntatore di matrice C++ quando aumenta il puntatore?
- 25. Android GoogleMap o SupportMapFragment - eccezione puntatore null
- 26. Attributi SimpleXML alla matrice
- 27. Android TextView e puntatore nullo eccezione
- 28. Passaggio del puntatore alla funzione in Dlang
- 29. Trasmetti il puntatore alla funzione?
- 30. Ottenere un puntatore a una matrice C char a Swift
Più contesto è richiesto: stai lavorando in una lingua specifica? Hai un esempio? – abiessu
considera il linguaggio C. E sto cercando un esempio in cui i nomi degli array non decadono in puntatore. –
@TheJoker Ho dato [qui una risposta] (http://stackoverflow.com/questions/15177420/what-does-sizeofarr-return/15177499#15177499) in cui mostro questo caso –