?
#include <stdio.h>
#include <stdlib.h>
int main()
{
const int max_i=3;
const int max_j=3;
register int i,j;
// Ein externes Array auf das nur mit Pointer zugegriffen werden kann (MATLAB)
int nodirectaccess[]={3,5,7,2,4,7,1,9,3};
for(i=0;i<9;i++)
{
printf("\n*(data+%d) = %d",i, nodirectaccess[i]); //eindimensionaler Zugriff
}
for(i=0;i<max_i;i++)
{
for(j=0;j<max_j;j++)
{
printf("\n\t\ttmp [%d][%d] = %d",i,j, ((int(*)[3])nodirectaccess)[i][j]);
} // ((int(*)[3])nodirectaccess) ist der Cast auf den von Dir gewünschten Zeiger[3][3]
}
system("PAUSE");
return 0;
}
Du hast ein eindimensionales Array namens nodirectaccess[].
Wenn Du es zweidimensional ansprechen willst, muss dieser Zeiger gecastet werden, siehe oben.
Es muss nichts formatiert weden!
Durch den Cast kennt der Compiler die neue Feldgrenze([3]) und erstellt optimalen Code für Zugriff.
mfg