c - C 中的不可变结构值

标签 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 中可能吗?那会怎样? 谢谢。

最佳答案

这在 C 中是不可能的。如果一个变量/字段不是常量,它可以被赋值任何东西。

可以在 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;

关于c - C 中的不可变结构值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48975326/

相关文章:

c - 尝试使 C 中的指针无效时出现段错误

c - 获取 Midi 文件时间

c - 递归函数在参数不为 NULL 时传递 NULL 指针

memory-management - 在动态存储分配和释放期间使用循环链表作为 "free list"v/s 平衡二叉搜索树

c - 没有编译错误、结构和二维数组问题,而且我从未到达第二个打印语句?

c - linux启动时间和停止计时器不工作?

c - while 循环中奇怪的指针行为

c - C 中的实现堆栈

java - 子列表实现

arraylist - Big O 运行时 - indexOf LinkedList/ArrayList