?? ??? ?int iTest[10] = {0}; ?? ??? ?int *pIt; ?? ??? ?pIt = iTest; ?? ??? ?*pIt = 3; ?? ??? ?pIt = &iTest[3]; ?? ??? ?*pIt = 4; ?? ??? ?pIt[1] = 5;
?? ??? ? typedef struct { ?? ??? ? int a; ?? ??? ? int b; ?? ??? ? }strTest; ?? ??? ? strTest ?myStruTst[10]; ?? ??? ? strTest ?*pStruT; ?? ??? ? pStruT = myStruTst; ?? ??? ? pStruT->b = 1; ?? ??? ? pStruT->a = 2;
?? ??? ? pStruT = &myStruTst[3]; ?? ??? ? pStruT->b = 3; ?? ??? ? pStruT->a = 4;
通过结构体指针可以获取结构体成员,一般形式为:
(*pointer).memberName
或者:
pointer->memberName
第一种写法中,. 的优先级高于* ,(*pointer) 两边的括号不能少。如果去掉括号写作*pointer.memberName ,那么就等效于*(pointer.memberName) ,这样意义就完全不对了。
第二种写法中,-> 是一个新的运算符,习惯称它为“箭头”,有了它,可以通过结构体指针直接取得结构体成员;这也是-> 在C语言中的唯一用途。
|