参数引用是否有物理变量?例如,在以下代码中:
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?如果它会返回某个窗口的地址,但是引用的参数仍然创建自己的变量,我该如何访问它们呢?
答案 0 :(得分:3)
它会返回两者,因为somewindow
和ownerwin
是相同的。这就是引用(别名,具有不同名称的相同对象),这就是通过引用传递的内容。
当然,如果HWND
与int
没有相同的对齐,这里有一个微妙的地方,在这种情况下,强制转换将返回一个不同的地址,但两者的地址相同(虽然不太可能。)
答案 1 :(得分:0)
它会将地址返回给变量somewindow
(在演员之前)。
答案 2 :(得分:0)
引用只是现有对象的别名,它没有自己的存储。获取ownerwin的地址将返回ownerwin引用的HWND对象的地址。
答案 3 :(得分:0)
&ownerwin
和&somewindow
的指针地址相同。