#include <stdio.h>
#include <stdlib.h>
struct mat_int{
int rows;
int cols; // used size
int size;
int* val;
};
void mat_alloc(struct mat_int* p_mat, int row_size, int col_size){
p_mat->rows = row_size;
p_mat->cols = col_size;
p_mat->size = row_size * col_size;
p_mat
->val
= (int*)malloc(p_mat
->size
* sizeof(int)); return p_mat;
}
void mat_print(const struct mat_int* p_mat){
for(int p=0; p<p_mat->rows; p++){
for(int q=0; q<p_mat->cols; q++){
printf("%d ", p_mat
->val
[p_mat
->cols
*p
+ q
]); }
}
}
int main(){
struct mat_int mat;
mat_alloc(&mat, 3, 3);
int i=0;
for(int i=0; i<mat.size; i++){
mat.val[i] = i;
}
mat_print(&mat);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnN0cnVjdCBtYXRfaW50ewoJaW50IHJvd3M7CglpbnQgY29sczsgLy8gdXNlZCBzaXplCglpbnQgc2l6ZTsKCWludCogdmFsOwp9Owp2b2lkIG1hdF9hbGxvYyhzdHJ1Y3QgbWF0X2ludCogcF9tYXQsIGludCByb3dfc2l6ZSwgaW50IGNvbF9zaXplKXsKCXBfbWF0LT5yb3dzID0gcm93X3NpemU7CglwX21hdC0+Y29scyA9IGNvbF9zaXplOwoJcF9tYXQtPnNpemUgPSByb3dfc2l6ZSAqIGNvbF9zaXplOwoJcF9tYXQtPnZhbCA9IChpbnQqKW1hbGxvYyhwX21hdC0+c2l6ZSAqIHNpemVvZihpbnQpKTsKCXJldHVybiBwX21hdDsKfQoKdm9pZCBtYXRfcHJpbnQoY29uc3Qgc3RydWN0IG1hdF9pbnQqIHBfbWF0KXsKCWZvcihpbnQgcD0wOyBwPHBfbWF0LT5yb3dzOyBwKyspewoJCXByaW50ZigiWyAiKTsKCQlmb3IoaW50IHE9MDsgcTxwX21hdC0+Y29sczsgcSsrKXsKCQkJcHJpbnRmKCIlZCAiLCBwX21hdC0+dmFsW3BfbWF0LT5jb2xzKnAgKyBxXSk7CgkJfQoJCXByaW50ZigiXVxuIik7Cgl9Cn0KCmludCBtYWluKCl7CglzdHJ1Y3QgbWF0X2ludCBtYXQ7CgltYXRfYWxsb2MoJm1hdCwgMywgMyk7CgkKCWludCBpPTA7Cglmb3IoaW50IGk9MDsgaTxtYXQuc2l6ZTsgaSsrKXsKCQltYXQudmFsW2ldID0gaTsKCX0KCQoJbWF0X3ByaW50KCZtYXQpOwoJcmV0dXJuIDA7Cn0=