2

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

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;

对 & ownerwinsnprintf的调用会返回变量 somewindow 的地址吗?或者它会将地址返回给变量ownerwin?如果它会返回 somewindow 的地址,但引用的参数确实仍然创建自己的变量,我该如何访问它们?

4

4 回答 4

3

它将返回两者,因为somewindowownerwin是相同的。这就是引用(别名,具有不同名称的同一个对象),这就是引用传递的作用。

当然,这里有一个微妙之处,如果 caseHWND没有与 相同的对齐方式int,在这种情况下,强制转换将返回不同的地址,但两者的地址仍然相同(尽管不太可能)。

于 2013-01-03T13:08:35.247 回答
0

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

于 2013-01-03T13:08:23.987 回答
0

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

于 2013-01-03T13:10:12.720 回答
0

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

于 2013-01-03T13:10:27.203 回答