考虑以下代码 -
输出结果为 -
为什么在打印变量
这种不同的行为是为什么?谢谢。
#include <iostream>
#include <stdio.h>
const int & retRef() {
return 6;
}
int main()
{
const int& k = retRef();
printf("Value: %d\n", k);
printf("Address: %p\n", &k);
printf("Value: %d\n", k);
return 0;
}
输出结果为 -
Value: 6
Address: 0x7ffd45bf544c
Value: 32692
为什么在打印变量
k
的地址后,其值发生了变化?如果我将行 const int& k = retRef()
替换为 const int& k = 6;
,则输出结果符合预期。这种不同的行为是为什么?谢谢。
printf
函数时,应该使用"%p"
格式来正确输出void*
类型的指针。需要进行强制类型转换以避免未定义行为。此外,为什么要使用printf
而不是std::cout
呢? - Some programmer dude