参数引用是否有物理变量?

时间:2013-01-03 13:04:40

标签: c++ variables pointers parameters

参数引用是否有物理变量?例如,在以下代码中:

void scalewindowsize (HWND &ownerwin, HWND &childwin)
{
  char buffer[100];
  snprintf (buffer, 100,"%d", (intptr_t)&ownerwin);
  MessageBox (NULL, buffer, "fail", NULL);
  return;
}
scalewindowsize(somewindow, irrelevantwindow);
return;

snprintf对& ownerwin的调用是否会向某个窗口的变量返回一个地址?或者它会将地址返回给变量ownerwin?如果它会返回某个窗口的地址,但是引用的参数仍然创建自己的变量,我该如何访问它们呢?

4 个答案:

答案 0 :(得分:3)

它会返回两者,因为somewindowownerwin是相同的。这就是引用(别名,具有不同名称的相同对象),这就是通过引用传递的内容。

当然,如果HWNDint没有相同的对齐,这里有一个微妙的地方,在这种情况下,强制转换将返回一个不同的地址,但两者的地址相同(虽然不太可能。)

答案 1 :(得分:0)

它会将地址返回给变量somewindow(在演员之前)。

答案 2 :(得分:0)

引用只是现有对象的别名,它没有自己的存储。获取ownerwin的地址将返回ownerwin引用的HWND对象的地址。

答案 3 :(得分:0)

&ownerwin&somewindow的指针地址相同。