gpt4 book ai didi

c - C 中的不可变结构值

转载 作者:太空宇宙 更新时间:2023-11-04 02:27:32 25 4
gpt4 key购买 nike

假设我们有这样的结构:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com