带方括号的链表

Linked list with square brackets

我正在尝试理解 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;
}

从上到下:

void initialize_new_line(t_parser_state *state)

这声明了一个名为“initialize_new_line”的函数,它接受一个名为“state”的参数,其类型为“指向类型 t_parser_state 的指针”。此函数不 return 任何东西(它 return 是“无效的”)。函数定义如下,仅包含赋值。

state->position = 0;
state->break_position = 0;
state->cur_node = NULL;

member access through pointer operator -> 表明类型 t_parser_state 是一个结构。成员 positionbreak_position 具有某种整数类型,因为它们是用 0 整数常量初始化的,但我们不能确定是哪一个。同样,成员cur_node是一个指针,但无法推断是什么类型。

state->lines[state->line_number].nodes = NULL;
state->lines[state->line_number].search = NULL;

array subscript operators ([]) indicate that lines must be an array. The member line_number must be some kind of integer type, as it is used an an index to the array. The member access operator(.)表示lines的元素必须是struct类型或者union类型,有成员nodessearch.由于两个都设置为NULL,我们可以假设元素类型是struct。数组成员 nodessearch 是指向某种未知类型的指针,因为它们被设置为空指针常量。