PHP Code:
/*
 * by Can
 * */

//Standard Headers
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define mat(m, col, row) \
        
m.data[row*m.cols col]

#define matp(m, col, row) \
        
m->data[row*m->cols col]

typedef struct
{
    
int colsrows;
    
int *data;
}
matrix_t;

void matrix_init(matrix_t *matrixint colsint rows)
{
    
matrix->cols cols;
    
matrix->rows rows;
    
matrix->data malloc(sizeof(int)*cols*rows);
    
    if (!
matrix->data)
    {
        
fprintf(stderr"Insufficient memory for a %dx%d matrix"colsrows);
        exit(
EXIT_FAILURE);
    }
    
    
// 0 fill
    
memset(matrix->data0cols*rows);
}

void matrix_print(matrix_t *matrix)
{
    
int in;
    
    
matrix->cols matrix->rows;
    
    
printf("--M%dx%d--\n"matrix->rowsmatrix->cols);
    for (
i=0i<ni++)
    {
        
printf("%d "matrix->data[i]);
        
        if ((
i+1)%matrix->cols == 0printf("\n");
    }
}


int main(int argcchar **argv)
{
    
matrix_t x;
    
matrix_init(&x54);
    
    
// column 0, row 0
    
mat(x00) = 9;
    
    
// column 0, row 1
    
mat(x01) = 2;
    
    
// column 3, row 2
    
mat(x32) = 5;
    
    
matrix_print(&x);
    
    
    
    return 
0;