P303
->运算符
利用指针访问结构中的成员是很普遍的,因此C语言针对此目的提供了一种运算符。此运算被称为右箭头选择(right arrow selection),它由一个减号跟一个>组成。利用运算符->可以编写语句
new_node->value = 10;
来代替语句
(*new_node).value = 10;
运算符->是运算符*和运算符.的组合,它先对 new_node 间接寻址以定位所指向的结构,然后再选择结构的成员 value。
由于运算符->产生左值(→4.2节),所以可以在任何允许普通变量的地方使用它。刚才已经看到一个new_node->value出现在赋值运算左侧的例子,在scanf调用中也很常见:
scanf("%d", &new_node->value);
注意,尽管 new_node 是一个指针,运算符&仍然是需要的。如果没有运算符&,就会把 new_node->value 的值传递给scanf函数,而这个值是 int类型。
==================================
P272
需要命名结构时,通常既可以选择声明结构标记也可以使用typedef。但是,正如稍后将看到的,结构用于链表时,强制使用声明结构标记。
==================================
++i : 先自增,后使用
i++:先使用,后自增
=================================
a = i++ 等价于 a = i; i = i+1; 先赋值,后自增
a = ++i 等价于 i=i+1; a = i; 先自增,后赋值