Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente bannato
    Registrato dal
    Jul 2009
    Messaggi
    60

    programmino C

    codice:
    typedef struct {
       int a;
       short s[2];
    } MSG;
    
    
    MSG *mp, m = {4, 1, 0};
    char *fp, *tp;
    mp = (MSG *) malloc(sizeof(MSG));
    
    for (fp = (char *)m.s, tp = (char *)mp->s; tp < (char *)(mp+1) ; )
                  *tp++ = *fp++;
    Qualcuno può spiegarmi cosa fa questo script ??

    più che altro non capisco il for e come faccia MSG m = .. ad assegnare qulacosa ..

    Grazie per l'aiuto !

  2. #2

    Re: programmino C

    Originariamente inviato da HolyFather
    typedef struct {
    int a;
    short s[2];
    } MSG;


    MSG *mp, m = {4, 1, 0};
    char *fp, *tp;
    mp = (MSG *) malloc(sizeof(MSG));

    for (fp = (char *)m.s, tp = (char *)mp->s; tp < (char *)(mp+1) ; )
    *tp++ = *fp++;

    Qualcuno può spiegarmi cosa fa questo script ??

    più che altro non capisco il for e come faccia MSG m = .. ad assegnare qulacosa ..

    Grazie per l'aiuto !
    Se leggi il Regolamento scopri che quando si posta un codice, è necessario includerlo nei tag CODE.

    Non capisci l'assegnazione della struttura m: in questo caso il 4 si riferisce al dato int della struttura (identificato con la variabile a), mentre 1 e 0 sono rispettivamente i valori dell'array con indice 0 e 1 (short s nella dichiarazione della struttura.)
    E' un metodo di scrittura sicuramente non didattico, ma utilizzato sopratutto da coloro che hanno già una certa "manualità" con questo linguaggio e con la sua sintassi a tratti variegata e imprevedibile.

    Se c'è qualcosa che ancora non capisci, posta pure.


    Ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    Aggiungo che trattandosi di C non si chiama script
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  4. #4
    Originariamente inviato da Ippo343
    Aggiungo che trattandosi di C non si chiama script
    Questo mi era sfuggito..

    In effetti parlare di codice C (qualunque esso sia) come di script è un eufemismo e potrebbe scatenare l'ira degli dei o, per chi ateo/agnostico, degli archè tanto cari agli antichi Greci.


    Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475

    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  6. #6
    Utente bannato
    Registrato dal
    Jul 2009
    Messaggi
    60

    Re: Re: programmino C

    Originariamente inviato da MdE2005
    Se leggi il Regolamento scopri che quando si posta un codice, è necessario includerlo nei tag CODE.

    Non capisci l'assegnazione della struttura m: in questo caso il 4 si riferisce al dato int della struttura (identificato con la variabile a), mentre 1 e 0 sono rispettivamente i valori dell'array con indice 0 e 1 (short s nella dichiarazione della struttura.)
    E' un metodo di scrittura sicuramente non didattico, ma utilizzato sopratutto da coloro che hanno già una certa "manualità" con questo linguaggio e con la sua sintassi a tratti variegata e imprevedibile.

    Se c'è qualcosa che ancora non capisci, posta pure.


    Ciao
    ah ! ok grazie sia per il consiglio del tag quote , all'altro utente per la correzione del termine , e per la dritta circa l'assegnamento dei valori .

    Per quanto riguarda il for, non mi è ben chiaro cosa faccia e in generale sia la condizione di inizio , che di fine che di incremento

    Cioè la condizione di inizio al puntatore fp viene assegnato il valore di m.s castato a puntatore char ( m.s prende il primo valore di S[] ) . tp assenga il valore di s ( quale dei 2 ) e lo chasta a char. tp < (char *) mp+1 prende il secondo elemento di mp .. e poi dove è la condizione di incremento ???

    codice:
    for (fp = (char *)m.s, tp = (char *)mp->s; tp < (char *)(mp+1) ; )
    *tp++ = *fp++;



    Puoi darmi 1 dritta ?
    grazie

  7. #7
    Hai capito la parte più difficile: l'incremento del ciclo è insito nel ciclo stesso, per farti un esempio "esemplificato":
    codice:
    int i; int a;
    for (i=1, a = 10; i <= 2; ) {
    i++;
    cout << i;
    }
    L'incremento della variabile di riferimento i avviene nel ciclo stesso, anzichè essere posta come argomento del ciclo stesso.


    Ciao

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.