C中的不可变结构值

时间:2018-02-25 15:46:23

标签: c pointers linked-list structure doubly-linked-list

我们假设我们有这样的结构:

typedef struct Node{
    int data;
    struct Node *next;
    struct Node *prev;
}node;

typedef struct {
    node *front;
    node *rear;
}deque;

由于它是一个双向链表,我想设置deque->front->next = NULLdeque->rear->prev = NULL,我不希望这些值被改变,无论其他功能如何。在C中这样的事情可能吗?那怎么会这样? 谢谢。

1 个答案:

答案 0 :(得分:2)

在C中是不可能的。如果变量/字段不是常数,则可以为其分配任何内容。

通过定义一个&#de; deque链接可以在C ++中实现这一点。类和重载其赋值函数。像这样:

class DequeLink {
    public:
        DequeLink& operator = (const DequeLink &dl) { /* check value and assign */ }
        DequeLink& operator = (void *p) { /* need this override to accept NULL as arg */ }

    private:
        DequeLink *m_pActualLink;
};

typedef struct {
    int data;
    DequeLink next;
    DequeLink prev;
} Node;