Telefonino.net network
 
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. NEI PREFERITI .:: | RSS Forum | RSS News | NEWS web | NEWS software |
| PUBBLICITA' | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | CERCA nel FORUM » |

Torna indietro   WinTricks Forum > Software > Programmazione

Notices

Rispondi
 
Strumenti discussione
Vecchio 20-08-2004, 15.45.53   #1
otto_cb
Newbie
 
Registrato: 01-08-2004
Messaggi: 18
otto_cb promette bene
Puntatori a carattere

Salve a tutti

volevo porvi un quesito riguardo un dubbio che mi è venuto da poco , sperando di trovare un ampio chiarimento . La questione riguarda proprio i puntatori , e cioè , un puntatore a un intero sulla mia macchina occupa 4Byte , un intero sulla mia macchina occupa 4Byte, mentre un carattere sulla mia macchina occupa 1Byte e un puntatore a un carattere sulla stessa macchina occupa 4Byte : Perche , non dovrebbe occupare lo stesso 1Byte invece di 4?


Se dichiaro un puntatore a un intero e alloco dinamicamente della memoria per lui con malloc:

code : int * Matrix = (int*)malloc(20 *sizeof(int));

quando vedo la sua dimensione totale con sizeof , il risultato è di 4Byte perchè appunto vedo il suo primo elemento Matrix[1].


Se invece dichiaro un puntatore a un carattere con lo stesso sistema:

Code : char * Matrix = (char *)malloc(20 *sizeof(char));

quando vedo la sua dimensione come nel precedente esempio ottengo sempre 4Byte quando credo che ne dovrei vedere 1 , visto che un carattere occupa un Byte .

Quindi questo è qanto, c'è qualcuno che puo darmi qualche spiegazione in merito .


Grazie


otto_cb non è collegato   Rispondi citando
Vecchio 20-08-2004, 16.09.04   #2
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
Il tuo dubbio amletico si risolve con una semplice affermazione .. e cioè che per la macchina non esistono differenze tra i tipi di dati carattere e intero ... vengono gestiti entrambi come numerici, il tipo dati "carattere" è solo una convenzione...

Mi spiego meglio:
Noi abbiamo i seguenti tipi nativi:

- char
- int
- long
- double

L'unico tipo dati "reale" è il "double", gli altri tipi vengono ottenuti eseguendo un casting del tipo dati più grande gestibile dall'architettura della macchina, il casting si ottiene troncando il materiale in eccesso, ad esempio, l'int è il casting di un double portato a 32 bit e così via.

Nell'ordine sopra ho ordinato i tipi dati dal più piccolo al più grande e non a caso ho messo il 'char' in testa.. il char infatti equivale ad uno "short int", cioè ad un 'int' a cui viene applicato il modificatore 'short' che lo restringe a 8-bit...

Il risultato è che per noi programmatori esiste la parolina chiave 'char' ma essa viene risolta dal compilatore in 'short int' il che vuol dire che un puntatore a char è equivalente ad un puntatore ad int, ed occupa perciò lo stesso quantitativo di memoria.

Bye
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 20-08-2004, 19.11.47   #3
LoryOne
Gold Member
WT Expert
 
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
LoryOne è un gioiello raroLoryOne è un gioiello raroLoryOne è un gioiello raro
Io ti pongo un'altra domanda:
Se con un puntatore punti alla locazione in memoria di un dato, quanto riusciresti ad indirizzare con un solo byte ?
LoryOne non è collegato   Rispondi citando
Vecchio 20-08-2004, 19.27.12   #4
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
Forse si confonde tra "puntatore" e "oggetto puntato"...

Bye
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 20-08-2004, 23.29.29   #5
otto_cb
Newbie
 
Registrato: 01-08-2004
Messaggi: 18
otto_cb promette bene
Grazie della spiegazione, non sapevo che i puntatori avessero la stessa dimensione , credevo anzi che i puntatori avessero dimensioni defferenti a seconda del tipo, come per le variabili. E' poco che studio questo linguaggio ma , un puntatore è una variabile che contiene un indirizzo di memoria specifico , mentre una variabile contine un valore. Quindi patrei sapere cosa mi vuoi dire con la tua domada?
otto_cb non è collegato   Rispondi citando
Vecchio 20-08-2004, 23.49.25   #6
otto_cb
Newbie
 
Registrato: 01-08-2004
Messaggi: 18
otto_cb promette bene
Quota:
Originariamente inviato da LoryOne
Io ti pongo un'altra domanda:
Se con un puntatore punti alla locazione in memoria di un dato, quanto riusciresti ad indirizzare con un solo byte ?
ciao grazie di aver visto la mia domanda , ma ora potresti dirmi che cosa volevi dire con la tua?

Abbiamo detto che i puntatori indifferentemente dal tipo hanno uguale dimensione, quindi la differenza la fa variabile a o meglio il tipo a cui punta il puntatore , che è l'oggetto puntato. Che cosa intendi dire con la tua domanda , che forse visto che non ci sono distinzioni di grandezza tra i puntatori cioè che, visto che il valore restituito da code:

sizeof(long*)

è pari anche al valore di code :

sizeof(char *)

quindi con un puntatore qualsiasi è possibile puntare a qualsiasi tipo indistintamente?
Non capisco cosa intendi dire con un solo byte. Potresti darmi un altra spiegazione ?

Grazie
otto_cb non è collegato   Rispondi citando
Vecchio 21-08-2004, 00.03.30   #7
P8257 WebMaster
Gold Member
 
Registrato: 07-01-2002
Loc.: Milano
Messaggi: 2.863
P8257 WebMaster promette bene
Vuol semplicemente dire che 1 byte è troppo poco per contenere le informazioni riguardanti un indirizzo di memoria ...

I puntatori sono entità che "puntano" ad uno specifico indirizzo di memoria (ove si trova il dato) .. come nella battaglia navale, è indispensabile che vi siano abbastanza informazioni per puntare a "quel" dato, avendo un singolo byte avresti troppo poche informazioni, come se nella battaglia navale io ti dicessi solo la riga e non la colonna, tu non riusciresti a tracciare il punto in cui voglio colpire.

Bye
P8257 WebMaster non è collegato   Rispondi citando
Vecchio 21-08-2004, 00.18.27   #8
otto_cb
Newbie
 
Registrato: 01-08-2004
Messaggi: 18
otto_cb promette bene
Ok ricevuto, scusate ma è poco che studio questo linguaggio e ancora meno i puntatori , quindi grazie delle vostre spiegazioni sono state molto preziose perche mi hanno chiarito ancor piu il concetto di puntatore e variabile.

Grazie

Bye Bye
otto_cb non è collegato   Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is ON
Gli smilies sono ON
[IMG] è ON
Il codice HTML è OFF

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
[OpenOffice.org 2.0.4 - CALC] Modifica carattere standard atreyu Office suite 0 17-10-2006 12.28.02
[XP SP2] Carattere di sistema cambiato da solo nextpaco Windows 7/Vista/XP/ 2003 21 30-01-2006 20.10.51
Aumentare dimensione carattere FrontPage MEGS Software applicativo 11 12-11-2005 00.22.52
[Java] Da ASCII a carattere GiulioCesare Programmazione 0 18-09-2005 13.48.55
Problema di paging, File System e puntatori animati in Win ME Ciobby Windows 9x/Me/NT4/2000 4 11-05-2005 00.20.35

Orario GMT +2. Ora sono le: 10.21.14.


E' vietata la riproduzione, anche solo in parte, di contenuti e grafica.
Copyright © 1999-2017 Edizioni Master S.p.A. p.iva: 02105820787 • Tutti i diritti sono riservati
L'editore NON si assume nessuna responsabilità dei contenuti pubblicati sul forum in quanto redatti direttamente dagli utenti.
Questi ultimi sono responsabili dei contenuti da loro riportati nelle discussioni del forum
Powered by vBulletin - 2010 Copyright © Jelsoft Enterprises Limited.