考虑下面的代码,我试图制作一个包含指针数组的Sparse_matrix。在“struct Sparse_matrix”中,这是在大小未知时创建指针数组的正确方法吗? C程序员解决这个问题的方法是什么?我是C的新手。
感谢您的帮助
#include "sparse_matrix.h"
struct Node{
short data;
unsigned short row;
Node* next;
};
struct SPARSE_MATRIX {
unsigned short cols;
Node* list[0];
};
SparseMatrix *create(unsigned short rows, unsigned short cols){
SparseMatrix* matrix=malloc(cols*sizeof(Node*)+sizeof(unsigned short));
matrix->cols=cols;
for(int i=0;i<cols;i++){
matrix->list[i]=NULL;
}
return matrix;
}
答案 0 :(得分:1)
更好写
SparseMatrix* matrix=malloc(cols*sizeof(Node*)+sizeof(SparseMatrix));
因为对齐和间隙