【发布时间】:2019-09-19 14:54:57
【问题描述】:
假设我有一个结构
typedef struct list_entry {
int val;
int val2;
} list_entry;
和一个指向它的指针
list_entry list;
list_entry* pList = &list;
那么为什么(*pList).val2 给了我存储在list.val2 的值,如果*pList 返回存储在pList 中的地址的值,并且由于pList 持有列表的地址,*pList 应该返回存储在 val 中的数字?提前致谢。
【问题讨论】:
-
听起来你可以使用good C++ book。将详细介绍指针的工作原理以及取消引用指针的含义。
-
出于同样的原因
list.val2为您提供val2而不是val的值。您只需访问复合数据类型的属性。 -
您正在访问
val2,因此您获得了存储在val2中的值。这有什么令人惊讶的,为什么您会期望以val结束? -
完全正常,您要求会员
val2您得到val2。但是*((int*)pList)是val -
+1 回复@NathanOliver。您可能混淆了 * 运算符和 * 声明符,或者换句话说,当 * 用于声明指针时,以及 * 用于取消引用指针时。