[C]Compatibilità dei puntatori

Qui vengono spostati discussioni e messaggi ritenuti inadeguati per il contenuto o la forma con cui sono stati espressi.
Scrivi risposta
Avatar utente
Dclaudio1990
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 624
Iscrizione: sabato 11 aprile 2015, 14:31
Distribuzione: openSUSE
Sesso: Maschile
Località: Roma

[C]Compatibilità dei puntatori

Messaggio da Dclaudio1990 »

M_A_W_ 1968 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4848540#p4848540][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Si tratta di un ottimo testo, da leggere e meditare con molta calma per la sua profondità, nascosta dietro una apparente semplicità espositiva. Il suo potenziale deflagrante è molto più elevato di "C traps and pitfalls", capostipite di quella serie di testi.

Due puntatori si dicono compatibili quando si può assegnare direttamente l'uno all'altro senza alcun problema e senza cast intermedi o nascosti. In particolare, è chiaro che devono avere esattamente il medesimo passo di incremento in aritmetica dei puntatori, e quindi puntare ad oggetti di tipi compatibili. La definizione è vagamente ricorsiva, ma molto chiara.

Ricordate bene che tutto il sistema dei tipi del C (e dei macroassembler) ruota unicamente attorno a questo concetto: quanti bytes occupa un dato di tipo X o Y, e di quanto si deve incrementare/decrementare il puntatore per puntare al successivo/precedente in un array. E tutto ciò è gestito al 99% a tempo di compilazione, generando apposite costanti e idiomi adeguati. Nulla di tutto ciò traspare a runtime, nel binario, ove si vedono solamente incrementi costanti di registri e di indirizzi in modo indiretto.

Anche per questi motivi qualcuno ha avuto la pessima idea di introdurre RTTI in C++ , che qualcun altro ha prontamente preso a calci nel deretano denunciandone l'orrendo peso in temini di potenza di calcolo quando qualche sprovveduto ha iniziato a ventilare l'idea di usare quel ciarpame anche in sistemi non mainstream.
Grazie mille per la risposta.
Della profondità del testo me ne sto rendendo conto piano piano.
A ogni capitolo deve seguire per forza qualche giorno di meditazione per capire cosa hai effettivamente appreso.
Nel esempio da me portato però non capisco l'incompatibilità tra BAZ2 e FOO2, visto che l'operando sinistro a tutte le caratteristiche dell'operando destro.
Sto uscendo pazzo con questi puntatori :muro:
:ciao:
"Io penso, dunque sono, ossia esisto."
-René Descartes
Scrivi risposta

Ritorna a “Quarantena”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 1 ospite