在linux的驱动开发中,最常用的,也最重要的数据结构是结构体,它也最容易使人混淆。要掌握结构体,首先要弄明白运算符的优先级:
在所有运算符中,下面4个运算符的优先级是最高的:结构体运算符“.”和“->”、用与函数调用的“()”以及用于下标的“[]”,因此它们同操作数之间的结合也最紧密。
例如对:
struct {
int len;
char *str;
}*p;
表达式
++p->len :增加len的值,其中的隐含括号关系是++(p->len)
(++p)->len: 先执行p的加1操作,再取len的值
(p++)->len: 先取len的值,再执行p的加1操作
*p->str: 取指针str所指向的对象的值
*p->str++:先取指针str所指向的对象的值,然后将str加1
(*p->str)++:先取指针str所指向的对象的值,然后将对象值加1
*p++ ->str:先取指针str所指向的对象的值,然后将P值加1
相关文章
- c语言:通过指向结构体变量的指针变量输出结构体变量中成员的信息
- 字符设备驱动程序中重要的三个数据结构file_operations、inode、file
- 【驱动】Linux驱动程序中的file,inode,file_operations三大结构体
- Linux字符设备中的两个重要结构体(file、inode)
- linux驱动开发( 五) 字符设备驱动框架的填充file_operations结构体中的操作函数(read write llseek unlocked_ioctl)
- Java中如何实现类似C++结构体的二级排序
- Linux 内核网络协议栈 中最重要的数据结构 SKB
- 《Linux驱动开发详解》——LCD设备驱动重要数据结构及驱动框架
- [linux内核笔记-2]linux中的数据结构(1)---- list_head
- 用C语言举例讲解数据结构中的算法复杂度与顺序表