Oppure

Loading
13/06/11 14:11
osharko
Salve da ieri ho iniziato a studiare i Pointers (puntatori, per chi lo voglia sapere dal libro C++ Primer Plus), ma purtroppo non ho capito bene cosa offrono e le differenze dalle semplici variabili:
vengono utilizzate per memorizzare un indirizzo di memoria, ma possono contenere anche un valore (mentre le variabili solo il valore);
però oltre a questo quale altra cosa può fare un Puntatore?

p.s. c'è un metodo per creare una propria struttura di dichiarazione con la quale si specifica a quanti Byte deve corrispondere la variabile dichiarata con il proprio tipo ti Dichiaratore?
aaa
13/06/11 14:21
lumo
Postato originariamente da osharko:

Salve da ieri ho iniziato a studiare i Pointers (puntatori, per chi lo voglia sapere dal libro C++ Primer Plus), ma purtroppo non ho capito bene cosa offrono e le differenze dalle semplici variabili:
vengono utilizzate per memorizzare un indirizzo di memoria, ma possono contenere anche un valore (mentre le variabili solo il valore);
però oltre a questo quale altra cosa può fare un Puntatore?

p.s. c'è un metodo per creare una propria struttura di dichiarazione con la quale si specifica a quanti Byte deve corrispondere la variabile dichiarata con il proprio tipo ti Dichiaratore?


Hai fatto un bel po' di confusione.
Un puntatore E' una variabile a tutti gli effetti e contiene un indirizzo di memoria.
Il valore di un puntatore E' quell'indirizzo di memoria;
int a = 2;
int* ptr = &a;
printf("%d\n", *ptr );

quello che stampi è effettivamente il valore di a, solo che lo ottieni in modo diverso: invece di passare a direttamente, dereferenzi il puntatore contente il suo indirizzo( *ptr ).
Comunque all'inizio i puntatori non sono mai del tutto chiari soprattutto per gli impieghi, ma andando avanti vedrai che sono essenziali.

Riguardo alla seconda domanda invece non l'ho ben capita.
aaa
13/06/11 14:26
osharko
bhe allora:
-se dichiari una variabile di tipo char hai a disposizione 1 Byte di memoria;
-se dichiari una variabile di tipo int hai a disposizione 2/4 byte di memoria;
-se dichiari una variabile di tipo double hai a disposizione 8 byte di memoria;
-c'è per caso qualche istruzione/funzione per creare una mia istruzione di assegnazione con la quale specifico io quanti byte deve riservare?
tipo:
nuova istruzione di assegnazione col nome di TROUPLE e mette a disposizione 20 byte.
esiste qualcosa del genere?
aaa
13/06/11 15:08
lumo
Postato originariamente da osharko:

bhe allora:
-se dichiari una variabile di tipo char hai a disposizione 1 Byte di memoria;
-se dichiari una variabile di tipo int hai a disposizione 2/4 byte di memoria;
-se dichiari una variabile di tipo double hai a disposizione 8 byte di memoria;
-c'è per caso qualche istruzione/funzione per creare una mia istruzione di assegnazione con la quale specifico io quanti byte deve riservare?
tipo:
nuova istruzione di assegnazione col nome di TROUPLE e mette a disposizione 20 byte.
esiste qualcosa del genere?


TROUPLE a = 20;

solo che il compilatore ti darà l'errore "il tuo design fa schifo" :rotfl:
Quanti byte riservare lo decide il compilatore; se vuoi allocare tot byte di memoria devi usare malloc() e free() e... i puntatori.
Comunque non ho ancora capito il tuo scopo XD
aaa
13/06/11 15:11
manvb.net
Postato originariamente da osharko:

bhe allora:
-se dichiari una variabile di tipo char hai a disposizione 1 Byte di memoria;
-se dichiari una variabile di tipo int hai a disposizione 2/4 byte di memoria;
-se dichiari una variabile di tipo double hai a disposizione 8 byte di memoria;
-c'è per caso qualche istruzione/funzione per creare una mia istruzione di assegnazione con la quale specifico io quanti byte deve riservare?
tipo:
nuova istruzione di assegnazione col nome di TROUPLE e mette a disposizione 20 byte.
esiste qualcosa del genere?


Puoi creare nuovi tipi di dato(vedi classi/strutture), ma se stai ancora studiando i puntatori è meglio che aspetti ad affrontare questi argomenti, rischi solo di incasinarti le idee!
aaa
13/06/11 15:27
osharko
va bene grazie mille,
il mio scopo era per fare potenze molto alte tipo
2^64 che nemmeno con long long double funge...
grazie mille comunque potete chiudere!
aaa
13/06/11 15:39
lumo
Postato originariamente da osharko:

va bene grazie mille,
il mio scopo era per fare potenze molto alte tipo
2^64 che nemmeno con long long double funge...
grazie mille comunque potete chiudere!

allora ciò che cerchi è questo: en.wikipedia.org/wiki/…
esistono librerie per gestire i bignum tipo GNU mp, solo che se non sai come funzionano i puntatori difficilmente riuscirai ad usarla :)
aaa