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.