在X264的代码中发现了这样的用法:
uint16_t (*quant4_mf[4])[16];
为了测试这种用法,写了个小程序
#include <stdio.h>
#include <stdlib.h>
#define INDEX1 4
#define INDEX2 5
#define INDEX3 6
typedef struct Test
{
int (*m1[4])[2];
int (*m2[4])[2];
}TEST;
void main()
{
int (*m[INDEX1])[INDEX3];
int i,j,k;
FILE *fp;
fp = fopen("tr.txt", "w");
for(i=0; i<INDEX1; i++)
{
m[i] = malloc(INDEX2*INDEX3*sizeof(int));
}
for(i=0; i<INDEX1; i++)
{
fprintf(fp, "m[%d]:0x%x\n", i, m[i]);
for(j=0; j<INDEX2; j++)
{
fprintf(fp, "\tm[%d][%d]:0x%x\n", i, j, m[i][j]);
for(k=0; k<INDEX3; k++)
fprintf(fp, "\t\tm[%d][%d][%d]:0x%x\n", i, j, k, &m[i][j][k]);
}
}
for(i=0; i<INDEX1; i++)
{
free(m[i]);
}
fflush(fp);
fclose(fp);
printf("TEst size: %d\n", sizeof(TEST));
getchar();
}