Προς το περιεχόμενο

Pointers ? ?


CHRIS_MALL

Προτεινόμενες αναρτήσεις

Δημοσ.

polu xondrika mporw na sou pw oti se pointers apo8hkeuontai dieu8hnseis sthn mnhmh enw se metablhtes timh...

(kalutera na sumbouleuteis kapoio tutorial, einai sxetika megalo kai poluploko kefalaio gia na sto ekshghsei kapoios apo forum, kalutera an exeis kati pio suggekrimeno)

Δημοσ.

Oi pointers einai i pemtousia tis C/C++. Einai auto pou tin ksexorizei apo tis alles glosses. Auto pou deinei tin apoliti eleftheria ston programmatisti (Telos me tin eisagogi).

 

Oi pointers einai tipoi pou gia timi exoun mia dieuthinsi sti mnimi. Einai 64bit (se 32bit compilers).

 

I pio koini xrisi tous einai stis grammatoseires. Dil.:

char* chv_string = "Hello";

 

O chv_string einai enas pointer pou deixnei i sto 'H', dil. sto proto gramma tis grammatoseiras "Hello".

 

 

Auta pou egrapsa einai teleios epifaniaka alla an thes na geineis asos stin C/C++ einai anageo na matheis pointers. Diafono kahteta me tin apopsi tou kickeras. Mporei oi pointers na einai diskoloi kai na odigoun polles fores se antieksoda alla einai tromera xrisimoi. An matheis kala tin logiki tous tha mporeis na ftiakseis ta panta.

Δημοσ.
Οι pointers σε 32bit συστήματα είναι 32bit (όσο και το address bus).

 

Γιατί;

Εννοώ , το μεγεθος του pointer το καθορίζει το πλάτος του address bus η το πλάτος του databus?

Δημοσ.

Ρε παιδιά ο pointer δείχνει μια διεύθυνση στην RAM. Όσο address bus έχει ο επεξεργαστής τόσος θα είναι και ο pointer. Δεν εξαρτάται καθόλου από τον μεταγλωττιστή παρά μόνο από τον επεξεργαστή που θα τρέξει το εκτελέσιμο.

 

Για IA32 (κλασσικά PC) sizeof(pointer) = 32 bit

Για IA64 => 64 bit

 

(υπάρχουν και μερικά ναι μεν αλλά εδώ, αλλά δεν είναι επί του παρόντος - π.χ. dos tiny memory model = 16 bit pointers κτλ).

 

Υ.Γ. το data bus δεν παίζει ρόλο, π.χ. στον 8088 οι pointers έχουν το ίδιο μέγεθος με τον 8086.

Δημοσ.
Ρε παιδιά ο pointer δείχνει μια διεύθυνση στην RAM. Όσο address bus έχει ο επεξεργαστής τόσος θα είναι και ο pointer. Δεν εξαρτάται καθόλου από τον μεταγλωττιστή παρά μόνο από τον επεξεργαστή που θα τρέξει το εκτελέσιμο.

 

Για IA32 (κλασσικά PC) sizeof(pointer) = 32 bit

Για IA64 => 64 bit

 

(υπάρχουν και μερικά ναι μεν αλλά εδώ' date=' αλλά δεν είναι επί του παρόντος - π.χ. dos tiny memory model = 16 bit pointers κτλ).

 

Υ.Γ. το data bus δεν παίζει ρόλο, π.χ. στον 8088 οι pointers έχουν το ίδιο μέγεθος με τον 8086.[/quote']

 

Χμμμ.

Σε κλειστες αρχιτεκτονικές δεν παιζει ρόλο. Αλλα γενικά μπορεις να έχεις data banks και να τις ελεγχεις με μικρότερο address bus. Εξαρτάται για τι μιλάμε. Μπορει να εχεις 32 bit databus, 16 bit address bus και να εχεις μια χαρα 32 bit διευθυνσεις.

Δημοσ.

mpes edo:http://cslibrary.stanford.edu/ και δές αυτά που λέει για τα pointers(για εμβάθυνση είναι οτι πρέπει, τα λέει ωραία).

Δημοσ.
Diafono kahteta me tin apopsi tou kickeras[/b']. Mporei oi pointers na einai diskoloi kai na odigoun polles fores se antieksoda alla einai tromera xrisimoi. An matheis kala tin logiki tous tha mporeis na ftiakseis ta panta.

 

safestata....den eipa na min tous xrisimopoiisei....apla epeidi i xrisi tous proipothetei tin pliri katanoisi tous, einai protimotero na xrisimopoiountai otan xreiazontai kai oxi askopa. I alogisti xrisi tous odigei se....@*%$%$$@$@. Vevaiws kai einai xrisimoi!!!!

 

na sou dwsw kai egw kana dio links mpas kai se voithisoun:

http://www.cplusplus.com/doc/tutorial/tut3-3.html

http://www.codersource.net/c++_pointers.html

Δημοσ.
Χμμμ.

Σε κλειστες αρχιτεκτονικές δεν παιζει ρόλο. Αλλα γενικά μπορεις να έχεις data banks και να τις ελεγχεις με μικρότερο address bus. Εξαρτάται για τι μιλάμε. Μπορει να εχεις 32 bit databus' date=' 16 bit address bus και να εχεις μια χαρα 32 bit διευθυνσεις.[/quote']Για του λόγου το αληθές, μπορείς να δώσεις παράδειγμα μίας συγκεκριμένης αρχιτεκτονικής όπου το address bus είναι διαφορετικό από το data bus, και ο pointer έχει το μέγεθος του data bus?

 

Υ.Γ. ας αφήσουμε απ' έξω απ' την συζήτηση το να έχουμε segments και offsets και να προσπελαύνουμε την RAM με 16*(segment register) + offset όπως γίνεται σε real x86 mode (με 20 bit address bus), γιατί όπως προανέφερα τότε είναι διφορούμενη η έννοια του pointer (δηλαδή αν pointer είναι ο ds:ax ή σκέτος ο ax ή το 16*ds+ax) οπότε πάμε σε φιλολογικές και όχι τεχνικές συζητήσεις...

Δημοσ.
oriste enas Pointer
Κάτσε βρε, δεν υποτίθεται ότι θα έπρεπε να έχει το ποδαράκι σηκωμένο; :-)
Alla an den kano lahtos kapoioi compilers exoune 64bit pointers gia simvatotita me 64bit arxitektonikes.
Σ' αυτό περιμένω παράδειγμα, γιατί εμένα μου ακούγεται extreme να μπορώ να δηλώσω έναν pointer που να δείχνει έξω από το address space του Η/Υ... Ο pointer απ' όσο ξέρω εξαρτάται πάντα απ' το μηχάνημα, ο int βέβαια μπορεί να ορίζεται ανάλογα με τον compiler...

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...