Generalnie to co podałeś jest niepotrzebnym zagmatwaniem następującego kodu:
#include <stdio.h>
#define N 3
typedef int cols[N];
int main()
{
cols tb[N]={{1,2,3},{4,5,6},{7,8,9}};
cols *p=tb;
for(int y=0;y<N;++y)
{
for(int x=0;x<N;++x) printf("%3d ",(*p)[x]);
//for(int x=0;x<N;++x) printf("%3d ",x[*p]);
//for(int x=0;x<N;++x) printf("%3d ",*(*p+x));
++p;
printf("\n");
}
return 0;
}
Wszystkie 3 fory wewnętrzne robią to samo. Aczkolwiek nawet ten niezagmatwany nie ma sensu bo (dzięki istnieniu cash procesora) będzie działać wolniej niż zwykły:
#include <stdio.h>
#define N 3
int main()
{
int tb[N][N]={{1,2,3},{4,5,6},{7,8,9}};
for(int y=0;y<N;++y)
{
for(int x=0;x<N;++x) printf("%3d ",tb[y][x]);
printf("\n");
}
return 0;
}
Co osobiście zapisałbym następująco:
#include <stdio.h>
#define N 3
int main()
{
int tb[N][N]={{1,2,3},{4,5,6},{7,8,9}};
for(int y=0;y<N;++y,printf("\n")) for(int x=0;x<N;++x) printf("%3d ",tb[y][x]);
return 0;
}
Prawdopodobnie komuś chciało się zademonstrować jak nie należy kodować.