带方括号的链表
Posted
技术标签:
【中文标题】带方括号的链表【英文标题】:Linked list with square brackets 【发布时间】:2021-11-03 19:08:07 【问题描述】:我正在尝试理解 C 中的单链表和结构。我希望能解释一下这段代码的作用,尤其是方括号和 .
的含义。
void initialize_new_line(t_parser_state *state)
state->position = 0;
state->break_position = 0;
state->cur_node = NULL;
state->lines[state->line_number].nodes = NULL;
state->lines[state->line_number].search = NULL;
【问题讨论】:
从上下文猜测:state->lines
可能是一个数组,state->line_number
可能是一个用作索引的 int。我有一个数组,我有一个索引——嗯!我有一个array[index]
。
在开始了解 C 中链表的基础知识之前,您肯定需要开始了解 C 的基础知识。在学习基本词汇和基本语法之前,没有办法用任何语言(包括 C)阅读或写作语言。
[ ]
是数组索引。不要粗鲁,但是....如果您还不了解 C 数组,那么现在学习链表和结构还为时过早
【参考方案1】:
从上到下:
void initialize_new_line(t_parser_state *state)
这声明了一个名为“initialize_new_line”的函数,该函数接受一个名为“state”的参数,该参数的类型为“指向t_parser_state
类型的指针”。此函数不返回任何内容(它返回“void”)。函数定义如下,仅由赋值组成。
state->position = 0;
state->break_position = 0;
state->cur_node = NULL;
member access through pointer operator->
表示t_parser_state
类型是一个结构体。成员 position
和 break_position
具有某种整数类型,因为它们是用 0 整数常量初始化的,但我们不能确定是哪一个。同样,成员cur_node
是一个指针,但无法推断出指向什么类型。
state->lines[state->line_number].nodes = NULL;
state->lines[state->line_number].search = NULL;
array subscript operators ([]
) 表示lines
必须是一个数组。成员line_number
必须是某种整数类型,因为它用作数组的索引。 member access operator (.
) 表示lines
的元素必须具有类型结构或联合类型,具有成员nodes
和search
。由于两者都设置为NULL
,我们可以假设元素类型为struct
。数组成员nodes
和search
是指向某个未知类型的指针,因为它们被设置为空指针常量。
【讨论】:
以上是关于带方括号的链表的主要内容,如果未能解决你的问题,请参考以下文章