#include #include #define ROWS 3 #define COLS 2 int ** buildArray(int row, int column){ int ** array = (int **)calloc(row, sizeof(int *)); for (int i = 0; i < row ; i++){ array[i] = (int *)calloc(column, sizeof(int)); } return array; } int main(int argc, char * argv[]){ int ** a = buildArray(ROWS, COLS); int b[ROWS][COLS]; for (int i = 0; i < ROWS; i++){ for (int j = 0; j < COLS; j++){ a[i][j] = i* COLS+j; b[i][j] = i * COLS + j; } } printf("A: \n"); for (int i = 0; i < ROWS; i++){ for (int j = 0; j < COLS; j++){ printf("a[%d][%d] = %d [%p]\n", i, j, a[i][j], &a[i][j]); } printf("\n"); } printf("B: \n"); for (int i = 0; i < ROWS; i++){ for (int j = 0; j < COLS; j++){ printf("b[%d][%d] = %d [%p]\n", i, j, b[i][j], &b[i][j]); } printf("\n"); } printf("A via pointer math: \n"); int *ap = a[0]; for (int i = 0; i < ROWS*COLS; i++){ printf("%x ", ap[i]); } printf("\n\n"); printf("B via pointer math: \n"); int *bp = b[0]; for (int i = 0; i < ROWS*COLS; i++){ printf("%x ", bp[i]); } printf("\n"); return 0; }