假设我有一段代码:
int x = 100;
int* p = &x;
*p = 20;
print(x); //<= reaching defitition of x?
执行时会输出 20。
问题是哪个语句是到达定义print(x)
,初始赋值还是指针赋值?
同样在以下代码中:
void sub(int* p)
{
*p = 20;
}
int x = 100;
sub(&x);
print(x); //<= reaching defitition of x?
存在同样的问题。它是达到定义分析的特例,还是需要特殊的算法来处理它?