以下基于地址结构来理解几个要点,自记录并供您参考:
1、迭代运算时,为什么临时变量必须是指针型标签?
- 查看 结构体指针域的 *next 的内存地址结构如下:
0x003ffb30 {
name=0x002e6b40 "33" next=0x00000000 <NULL> }
所以,为便于传递,临时标签必须与 *next相同结构,同样是指针型。
2、 如何理解 求值符*与求地址符& ?
查看 *next 的地址结构如下:
next 0x003ffb40 {
name=0x002e6b38 "22" next=0x003ffb30 {
name=0x002e6b40 "33" next=0x00000000 <NULL> } } student *
查看 *next所指结点 的地址结构如下:
s2 {
name=0x002e6b38 "22" next=0x003ffb30 {
name=0x002e6b40 "33" next=0x00000000 <NULL> } } student
可以看出,s1.next 就是在 s2 地址上增加了一层新地址,该新地址就是 “s1.next” 标签所在地址, “s1.next” 的值就是 s2 。
简述为:
- 定义指针型标签是增加一层地址;
- 求值符 * 是剥去一层地址;
- 求地址& 是求标签的地址;
3、示例代码如下,有详细的地址结构说明:
| //第一 node
|+ s1 {
name=0x002e6b30 "11" next=0x003ffb40