У меня есть связанный список в C следующим образом:
typedef struct intSet *link;
typedef struct intSet {
int num;
link next;
} intSet;
Когда я напечатал размер различных членов структуры, я получил следующее:
sizeof(List) = 8 bytes //List is a newly created list
sizeof(curr->num) = 4 bytes // curr is just a node within the list
sizeof(curr->next) = 8 bytes
Мой вопрос: всегда ли сама структура имеет размер 8 байтов независимо от того, сколько элементов у нас в списке, или эти 8 байтов относятся только к первому узлу и отличаются от следующих узлов в списке экземпляры той же структуры?
Причина, по которой я спрашиваю, состоит в том, что, поскольку я планирую реализовать это как определяемый пользователем тип данных в PostgreSQL, и поэтому мне необходимо объявить, является ли длина типа данных постоянной или переменной:
CREATE TYPE list (
internallength = 8? or internallength = variable
input = ..., output = ... );
Если это переменная, я должен изменить свое представление структуры на:
typedef struct intSet {
int size;
int num;
link next;
} intSet;
и я подозреваю, что мне, возможно, придется постоянно обновлять размер, если узлы являются отдельными, а не разными частями одной и той же структуры, так как следующий узел может иметь размер на 4 байта больше, чем последний узел.
Будем весьма благодарны за любые советы или указатели.