user-0 提问: 结构体数组fellow[0].income=(*him).income的不理解

回复:
user: user-1
content: (*A).B 等价于 A->B

user: user-0
content: 引用 10 楼 q3733353520 的回复:[quote=引用 9 楼 learnc2015 的回复:] [quote=引用 8 楼 q3733353520 的回复:] [quote=引用 7 楼 learnc2015 的回复:] [quote=引用 6 楼 q3733353520 的回复:] [quote=引用 1 楼 learnc2015 的回复:] 我刚才想了一下，对应红色部分，我是这样理解的，此时的*him表示取him保存的地址指向的内存区域的值，而此时的值包括结构体所有成员的值，因此*him.name也就能解释通顺了，我这样理解对吗?  对了一部分，它此时的值不是说是所有成员的值，就是结构体对象的值，因为它的类型是结构体的指针，编译器是根据类型来决定变量在类存中占用的位置大小的，也可以理解为    type fellow; type* him; him = &fellow;[/quote] "它此时的值不是说是所有成员的值，就是结构体对象的值" 有什么区别吗？[/quote]  对于某个变量的值，那样的说法是错误的[/quote] 变量没有值吗？[/quote]  我的意思是你把结构体变量的值说成是结构体变量所有成员的值这种说法是错误的，虽然意思到了[/quote] 不是每个成员都有自己的值吗？我也糊涂了

user: user-2
content: 引用 9 楼 learnc2015 的回复:[quote=引用 8 楼 q3733353520 的回复:] [quote=引用 7 楼 learnc2015 的回复:] [quote=引用 6 楼 q3733353520 的回复:] [quote=引用 1 楼 learnc2015 的回复:] 我刚才想了一下，对应红色部分，我是这样理解的，此时的*him表示取him保存的地址指向的内存区域的值，而此时的值包括结构体所有成员的值，因此*him.name也就能解释通顺了，我这样理解对吗?  对了一部分，它此时的值不是说是所有成员的值，就是结构体对象的值，因为它的类型是结构体的指针，编译器是根据类型来决定变量在类存中占用的位置大小的，也可以理解为    type fellow; type* him; him = &fellow;[/quote] "它此时的值不是说是所有成员的值，就是结构体对象的值" 有什么区别吗？[/quote]  对于某个变量的值，那样的说法是错误的[/quote] 变量没有值吗？[/quote]  我的意思是你把结构体变量的值说成是结构体变量所有成员的值这种说法是错误的，虽然意思到了

user: user-0
content: 引用 8 楼 q3733353520 的回复:[quote=引用 7 楼 learnc2015 的回复:] [quote=引用 6 楼 q3733353520 的回复:] [quote=引用 1 楼 learnc2015 的回复:] 我刚才想了一下，对应红色部分，我是这样理解的，此时的*him表示取him保存的地址指向的内存区域的值，而此时的值包括结构体所有成员的值，因此*him.name也就能解释通顺了，我这样理解对吗?  对了一部分，它此时的值不是说是所有成员的值，就是结构体对象的值，因为它的类型是结构体的指针，编译器是根据类型来决定变量在类存中占用的位置大小的，也可以理解为    type fellow; type* him; him = &fellow;[/quote] "它此时的值不是说是所有成员的值，就是结构体对象的值" 有什么区别吗？[/quote]  对于某个变量的值，那样的说法是错误的[/quote] 变量没有值吗？

user: user-2
content: 引用 7 楼 learnc2015 的回复:[quote=引用 6 楼 q3733353520 的回复:] [quote=引用 1 楼 learnc2015 的回复:] 我刚才想了一下，对应红色部分，我是这样理解的，此时的*him表示取him保存的地址指向的内存区域的值，而此时的值包括结构体所有成员的值，因此*him.name也就能解释通顺了，我这样理解对吗?  对了一部分，它此时的值不是说是所有成员的值，就是结构体对象的值，因为它的类型是结构体的指针，编译器是根据类型来决定变量在类存中占用的位置大小的，也可以理解为    type fellow; type* him; him = &fellow;[/quote] "它此时的值不是说是所有成员的值，就是结构体对象的值" 有什么区别吗？[/quote]  对于某个变量的值，那样的说法是错误的

user: user-0
content: 引用 6 楼 q3733353520 的回复:[quote=引用 1 楼 learnc2015 的回复:] 我刚才想了一下，对应红色部分，我是这样理解的，此时的*him表示取him保存的地址指向的内存区域的值，而此时的值包括结构体所有成员的值，因此*him.name也就能解释通顺了，我这样理解对吗?  对了一部分，它此时的值不是说是所有成员的值，就是结构体对象的值，因为它的类型是结构体的指针，编译器是根据类型来决定变量在类存中占用的位置大小的，也可以理解为    type fellow; type* him; him = &fellow;[/quote] "它此时的值不是说是所有成员的值，就是结构体对象的值" 有什么区别吗？

user: user-2
content: 引用 1 楼 learnc2015 的回复:我刚才想了一下，对应红色部分，我是这样理解的，此时的*him表示取him保存的地址指向的内存区域的值，而此时的值包括结构体所有成员的值，因此*him.name也就能解释通顺了，我这样理解对吗?  对了一部分，它此时的值不是说是所有成员的值，就是结构体对象的值，因为它的类型是结构体的指针，编译器是根据类型来决定变量在类存中占用的位置大小的，也可以理解为    type fellow; type* him; him = &fellow;

user: user-0
content: 引用 2 楼 sholber 的回复:这位兄台，只要举例，就是mm，这天天想mm都想疯鸟…… 如果一元运算符*的操作数是指向函数的指针，则结果是函数指示符；如果操作数是指向对象的指针，则结果是左值；如果操作数是指向类型T的指针，则结果的类型是T。 就算*运算符的结果是值不是左值，也可以适用于.运算符。如果 . 运算符的左操作数是值，则结果也是值；如果左操作数是左值，则结果也是左值。 谢谢，看了一下，还是不明白你说的左值和函数指示符是啥意思 http://blog.csdn.net/leichelle/article/details/6939138

user: user-0
content: 引用 2 楼 sholber 的回复:这位兄台，只要举例，就是mm，这天天想mm都想疯鸟…… 如果一元运算符*的操作数是指向函数的指针，则结果是函数指示符；如果操作数是指向对象的指针，则结果是左值；如果操作数是指向类型T的指针，则结果的类型是T。 就算*运算符的结果是值不是左值，也可以适用于.运算符。如果 . 运算符的左操作数是值，则结果也是值；如果左操作数是左值，则结果也是左值。 皇上，难道你不想MM？,我是想的啊，那天我也有个MM

user: user-3
content: him指向的是结构体变量的首地址，假如him=&fellow，则*him==fellow，(*him).等同于fellow.   个人观点

user: user-0
content: 我刚才想了一下，对应红色部分，我是这样理解的，此时的*him表示取him保存的地址指向的内存区域的值，而此时的值包括结构体所有成员的值，因此*him.name也就能解释通顺了，我这样理解对吗?

user: user-4
content: 这位兄台，只要举例，就是mm，这天天想mm都想疯鸟…… 如果一元运算符*的操作数是指向函数的指针，则结果是函数指示符；如果操作数是指向对象的指针，则结果是左值；如果操作数是指向类型T的指针，则结果的类型是T。 就算*运算符的结果是值不是左值，也可以适用于.运算符。如果 . 运算符的左操作数是值，则结果也是值；如果左操作数是左值，则结果也是左值。