在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