请参阅下面的一段代码和我对结果的解释。需要帮助了解指针语义
void f (int * p, int * q)
{
p = q;
*p = 2;
}
int i = 0;
int j = 1;
int main()
{
f(&i, & j);
printf("%d %d\n", i, j);
return 0;
}
我们有两个全局变量i
和j
,我们通过这两个变量的函数指针f
。当我们做p = q
时,我们实际上放弃了i
的参考,我们得到两个指针,即p
和q
都指向j
。那么当我们做*p = 2
时,我们实际上将j
的值更改为2
。
然而,正如我们在步骤p = q
丢失的i
基准,在主程序中,获取打印的i
值是全局变量是0
。因此我们得到结果为i = 0
和j = 2
。
,请告诉我,如果这是一个正确的解释...
现在另一个问题是,当我们在函数f做p = q
,它会创建一个内存泄漏,因为以前由p指向的价值将无法访问。
“它会创建一个内存泄漏,因为先前由p指向的值将无法访问......”:只有在函数f中它才会不可用。但它仍然是主要的访问。变量p和q只在'f'中存在,而不是在main或其他函数中。 – 2011-12-22 01:50:46
[comp.lang.c FAQ](http://c-faq.com)是一个很好的资源。第4节讨论指针。 – 2011-12-22 02:43:53
这是一个简单的问题...在问这里之前检查cfaq – 2011-12-22 05:07:43