linux C 开发中重要的数据结构——结构体
#数据结构#linux#c#struct
上述代码声明了一个匿名结构体类型,包含两个成员:
len:整数,用来保存字符串的长度或其他计数信息。str:指向字符的指针,通常指向一个以\0结束的字符串缓冲区。
同时,声明了一个指向该结构体的指针变量 p。在后续代码中,p 必须先指向合法的结构体实例(例如通过 kmalloc、malloc 或者栈上分配),才能安全地访问成员。
2. 运算符优先级——结构体访问的关键
C 语言的运算符有严格的优先级和结合性。对于结构体而言,以下四类运算符的优先级最高,且结合最紧密:
| 运算符 | 说明 |
|---|---|
. | 结构体成员访问(左操作数为结构体对象) |
-> | 结构体指针成员访问(左操作数为指向结构体的指针) |
() | 函数调用或强制类型转换 |
[] | 数组下标访问 |
因为它们的优先级最高,编译器在解析表达式时会先把这些运算符与其最近的操作数结合,然后才考虑其他运算符(如算术、递增/递减等)。这也是导致很多新手在阅读或编写代码时产生歧义的根源。
下面通过一系列示例,逐步说明在不同组合下运算顺序的细微差别。