cas*_*see 1 c++ printf pointers cout
所以我有一段代码需要打印一个数字的地址和一个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;
}
Run Code Online (Sandbox Code Playgroud)
输出是:
fPtr指向的对象的值:1
数字2的值:0
编号1的地址:0xbfb7e348
0xbfb7e348
地址fPtr:0xbfb7e34c
0xbfb7e348
为什么使用%p转换说明符打印的两个地址相同?当使用&时,地址是不同的,这是我期望的,因为number1和fPtr保存在不同的地址中.
另外,我从语句'printf("%p \n",&number1)中删除了&;' 返回值为零.谁有人解释为什么?
在这里,您打印的地址是fPtr:
cout << "Address fPtr: " << &fPtr << endl;
Run Code Online (Sandbox Code Playgroud)
在这里,你打印的价值是fPtr:
printf("%p", fPtr);
Run Code Online (Sandbox Code Playgroud)
那些不是一回事.
如果你要打印的地址fPtr用printf,那么你需要
printf("%p", &fPtr);
Run Code Online (Sandbox Code Playgroud)
如果要打印fPtrwith 的值std::cout,则需要
cout << fPtr << endl;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
253 次 |
| 最近记录: |