Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    11

    [C] Aritmetica dei puntatori

    Ok giusto.
    E se :
    int* a =0x00110022; a++;

    Quanto vale a? Perchè?

  2. #2

    Re: [C] Aritmetica dei puntatori

    Originariamente inviato da Pole23
    Ok giusto.
    E se :
    int* a =0x00110022; a++;

    Quanto vale a? Perchè?
    Qualcosa mi suggerisce che alka chiuderà questa discussione! (Leggiti il regolamento)
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  3. #3
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772

    Re: [C] Aritmetica dei puntatori

    Originariamente inviato da Pole23
    Ok giusto.
    E se :
    int* a =0x00110022; a++;

    Quanto vale a? Perchè?
    a nn vale niente perchè c'è un errore di sintassi e nn ti compila nemmeno
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  4. #4
    *a = 0x....
    Senza l'int davanti, lo dichiari prima..

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Scusate ma, al di la' del fatto che il quesito e' mal posto e tutto quello che volete, ma errori di sintassi non ce ne sono e non ho capito i commenti seguenti ...

    Al massimo, potrebbe essere necessario specificare il tipo davanti alla costante con un cast

    int* a = (int *)0x00110022; a++;

    ma nulla di piu' ...

    Per il resto, si puo' dire che e' una semplice operazione con l'aritmetica dei puntatori.

    Dopo l'incremento, a varra'

    0x00110022 + sizeof(int)

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Originariamente inviato da oregon
    Scusate ma, al di la' del fatto che il quesito e' mal posto e tutto quello che volete, ma errori di sintassi non ce ne sono e non ho capito i commenti seguenti ...

    Al massimo, potrebbe essere necessario specificare il tipo davanti alla costante con un cast

    int* a = (int *)0x00110022; a++;

    ma nulla di piu' ...

    Per il resto, si puo' dire che e' una semplice operazione con l'aritmetica dei puntatori.

    Dopo l'incremento, a varra'

    0x00110022 + sizeof(int)
    Dipende... se l'autore del post intendeva una scrittura come quella intesa da Michele Facchin, allora il risultato non è calcolabile.
    O meglio... sarà questo:
    codice:
    (Indirizzo di a) + sizeof(int)
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Originariamente inviato da LeleFT
    Dipende... se l'autore del post intendeva una scrittura come quella intesa da Michele Facchin, allora il risultato non è calcolabile.
    O meglio... sarà questo:
    codice:
    (Indirizzo di a) + sizeof(int)
    Ciao.
    Beh ... ci dobbiamo attenere a quanto scritto dall'autore, mica possiamo fare supposizioni senza motivo.

    Se viene scritto

    int *a = 0x00110022;

    vuol dire che si vuol assegnare un valore ad un puntatore ad intero.
    E a parte il cast, ripeto, non c'e' nessuno problema.

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Originariamente inviato da oregon
    Beh ... ci dobbiamo attenere a quanto scritto dall'autore, mica possiamo fare supposizioni senza motivo.

    Se viene scritto

    int *a = 0x00110022;

    vuol dire che si vuol assegnare un valore ad un puntatore ad intero.
    E a parte il cast, ripeto, non c'e' nessuno problema.
    Sono d'accordo con te... ma vista la complessità della domanda posta risulta chiaro che l'autore del post non è pratico di puntatori. E questo mi fa sorgere subito una domanda: cosa voleva fare l'autore del post quando ha posto la domanda? Voleva assegnare il valore al puntatore o assegnarlo alla variabile (locazione) puntata?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ripeto ... nessuna supposizione ... atteniamoci ai fatti ...

    Quando si fara' risentire, lo chiarira' lui ...

  10. #10
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772
    Originariamente inviato da oregon
    Se viene scritto
    int *a = 0x00110022;
    vuol dire che si vuol assegnare un valore (intero) ad un puntatore ad intero.
    Mettiamola cosi, un compilatore deve darti minimo un warning su una cosa del genere. Altri su un'operazione del genere ti segnalano direttamente errore di sintassi perche si rifiutano di convertire implicitamente, visto che a seconda della macchina, un puntatore potrebbe essere piu piccolo di un int e quindi essere una conversione con potenziale perdita di valore.
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.