【发布时间】:2020-05-21 13:36:47
【问题描述】:
int * x;
int v = 7;
给定这段代码,有什么区别
1.x = &v 和
2.*x = v ?
我知道在这两种情况下,*x 都包含7,但x 在这两种情况下都包含v 的内存位置吗?如果不是,x 在情况 1 和 2 中包含什么,这是两者之间唯一显着的区别吗?
【问题讨论】:
-
*x=v是未定义的行为。 -
"我知道在这两种情况下,*x 都包含 7" - 不,您的理解是错误的。您的第二个示例是 UB - 也就是无效/损坏/错误代码。
-
您的意思是执行 both 语句,即
x = &v后跟*x = v?这与仅仅执行其中一个会产生不同的结果。