Back to Blog

linux C 开发中重要的数据结构——结构体

#数据结构#linux#c#struct

上述代码声明了一个匿名结构体类型,包含两个成员:

  • len:整数,用来保存字符串的长度或其他计数信息。
  • str:指向字符的指针,通常指向一个以 \0 结束的字符串缓冲区。

同时,声明了一个指向该结构体的指针变量 p。在后续代码中,p 必须先指向合法的结构体实例(例如通过 kmallocmalloc 或者栈上分配),才能安全地访问成员。


2. 运算符优先级——结构体访问的关键

C 语言的运算符有严格的优先级和结合性。对于结构体而言,以下四类运算符的优先级最高,且结合最紧密:

运算符说明
.结构体成员访问(左操作数为结构体对象)
->结构体指针成员访问(左操作数为指向结构体的指针)
()函数调用或强制类型转换
[]数组下标访问

因为它们的优先级最高,编译器在解析表达式时会先把这些运算符与其最近的操作数结合,然后才考虑其他运算符(如算术、递增/递减等)。这也是导致很多新手在阅读或编写代码时产生歧义的根源。

下面通过一系列示例,逐步说明在不同组合下运算顺序的细微差别。


3. 结构体指针与递增/递减运算的组合

3.1 ++p->len