Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    35

    [C] Puntatore e array unsigned char

    Ho un array bidimensionale inizializzato int A[280][272] con tutti i suoi valori. Da questo array tramite un puntatore devo estrarne il contenuto. Per fare ciò ho semplicemente ricostruito l'array tramite un puntatore che punta al primo elemento con il seguente codice:

    codice:
    int *a=NULL;
        int m=(sizeof(*A)/4);
        int n=(sizeof(A)/4)/m;
        int i,j;
    
        a=&(A[0][0]);
    
    
        for(i=0;i<n;i++)
    
        {
    
            for(j=0;j<m;j++)
    
            {
    
                A[i][j]=*(a+i*m+j);
    
            }
    
    
        }
    Il codice funziona e ottengo esattamente l'array di partenza. Il problema è che il tipo int occupa 4 byte e ho bisogno di ridurre la dimensione dell'array, quindi ho dichiarato quest'ultimo come unsigned char A[280][272], in modo che ogni elemento dell'array occupi 1 byte, ma a questo punto non posso modificare il codice come segue:

    codice:
    unsigned char *a=NULL;
        int m=(sizeof(*A));
        int n=(sizeof(A))/m;
        int i,j;
    
        a=&(A[0][0]);
    
    
        for(i=0;i<n;i++)
    
        {
    
            for(j=0;j<m;j++)
    
            {
    
                A[i][j]=*(a+i*m+j);
    
            }
    
    
        }
    Così facendo ottengo dei caratteri strani e suppongo che non posso usare un puntatore a unsigned char, ma usando un puntatore a int comunque il compilatore mi dà errore. Come posso risolvere il problema? Ho bisogno di ricostruire l'array come fatto nel primo codice, ma dichiarando quest'ultimo come unsigned char.

  2. #2
    Ultima modifica di vbextreme; 01-04-2014 a 08:47

  3. #3
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da vbextreme Visualizza il messaggio
    Sì, ma nell'altro forum non qui ... dovevi segnalare solo lì ...

    Per quanto riguarda il problema, tu cosa vuoi fare con l'array

    A

    ?
    Ultima modifica di oregon; 01-04-2014 a 08:57
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  4. #4
    Sì, ma nell'altro forum non qui ... dovevi segnalare solo lì ...
    Avevo già risposto all'altro forum,poi ho letto qui...
    In questo forum è stato postato dopo quindi teoricamente è questo quello del crossposting giusto?
    Perchè hai affermato che dovevo postarlo nell'altro forum?

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Quote Originariamente inviata da vbextreme Visualizza il messaggio
    Avevo già risposto all'altro forum,poi ho letto qui...
    In questo forum è stato postato dopo quindi teoricamente è questo quello del crossposting giusto?
    Perchè hai affermato che dovevo postarlo nell'altro forum?
    Perché dovrebbe essere vietato fare la stessa domanda su forum differenti?
    Il crossposting è più un postare la stessa richiesta in più sezioni dello stesso forum...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Perché dovrebbe essere vietato fare la stessa domanda su forum differenti?
    Per mancanza di rispetto nei confronti di chi ti risponde.
    Dopo un certo periodo che nessuno risponde o comunque il problema non viene risolto allora la tecnica del crossposting è consentita.
    è come se uno con la febbre andasse da 10 dottori contemporaneamente.Non si capirebbe piu niente!,invece se dopo essere andato da un dottore non si vedono migliorie allora è consigliato andare da un'altro dottore.

    Comunque ora capisco oregon,qui tutto è lecito,scusate.

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Quote Originariamente inviata da vbextreme Visualizza il messaggio
    Comunque ora capisco oregon,qui tutto è lecito,scusate.
    Non tutto è lecito ma questo forum non vieta il "crossposting tra più forum".
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.