所以我有一段代码需要打印一个数字的地址和一个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)中删除了&;' 返回值为零.谁有人解释为什么?
在这里,您打印的地址是fPtr
:
cout << "Address fPtr: " << &fPtr << endl;
在这里,你打印的价值是fPtr
:
printf("%p", fPtr);
那些不是一回事.
如果你要打印的地址fPtr
用printf
,那么你需要
printf("%p", &fPtr);
如果要打印fPtr
with 的值std::cout
,则需要
cout << fPtr << endl;