int **A = malloc(ROWS * sizeof(int*)); A[0] = malloc(ROWS * COLS * sizeof(int)); for(int i = 1; i < ROWS; i++) A[i] = A[i-1] + COLS; // use A[i][j]