Создать массив указателей, когда размер неизвестен (разреженная матрица) - PullRequest
2 голосов
/ 02 декабря 2011

рассмотрим код ниже, пытаюсь создать 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;
}

1 Ответ

1 голос
/ 02 декабря 2011

Лучше пиши

  SparseMatrix* matrix=malloc(cols*sizeof(Node*)+sizeof(SparseMatrix));

из-за выравниваний и пробелов

...