【发布时间】:2020-05-27 11:49:24
【问题描述】:
这两个运算符有什么区别? 我的理解是它们都指向它们所使用的变量的内存位置。
例如
int p;
foo(*p,&p);
【问题讨论】:
-
表达式
&p返回变量p的位置(地址)。表达式*p返回位于p变量内的值,通常称为取消引用。因此,如果p包含值2020,那么*p将返回存储在位置2020 的整数(如果可能)。 -
@ThomasMatthews 在问题的代码中,
*p不会编译。一元*的操作数必须是指针类型的表达式。指针不能包含值2020(类型为int),尽管它可能包含值(int*)2020。 -
@KeithThompson "一元
*的操作数必须是指针类型的表达式" - 或实现成员operator*的类/结构类型的实例.