【发布时间】:2016-01-06 22:47:33
【问题描述】:
所以我有一段代码需要打印一个数字的地址和一个ptr的地址。 这是代码:
int main() {
float number1 = 1;
float number2;
float *fPtr;
fPtr = &number1;
cout << "Value of object pointed to by fPtr: " << *fPtr << endl;
cout << "Value of number 2: " << number2 << endl;
cout << "Address of number 1: " << &number1 << endl;
printf("%p\n", &number1);
cout << "Address fPtr: " << &fPtr << endl;
printf("%p", fPtr);
return 0;
}
输出是:
fPtr 指向的对象的值:1
数字 2 的值:0
1号地址:0xbfb7e348
0xbfb7e348
地址 fPtr: 0xbfb7e34c
0xbfb7e348
为什么使用 %p 转换说明符打印的两个地址相同?当使用 & 时,地址是不同的,这是我所期望的,因为 number1 和 fPtr 保存在不同的地址中。
此外,我从语句 'printf("%p\n", &number1);' 中删除了 &返回值为零。谁能解释一下原因?
【问题讨论】: