格式化指针的cout
format cout for pointer
我想将这些c代码转换为c++代码。这是关于的指针打印
int n = 44;
//printf("n = %d t &n = %xn", n, &n);
cout<<"n ="<<n<< "t" <<"&n ="<<hex<<int(&n)<<endl;
当我运行printf输出时是这样的:
n=44 &n=22ff1c
但当我运行cout输出时是这样的:
n=44 &n=22ff0c
为什么这两个版本为n的地址输出不同的值?
编译器碰巧将堆栈分配的变量放在程序的不同版本中的不同位置。
尝试在同一程序中同时包含printf和cout版本,以便它们使用完全相同的指针。然后,您将看到这两个版本的行为方式相同。
int n = 44;
printf("n = %d t &n = %xn", n, &n);
cout<<"n ="<<n<< "t" <<"&n ="<<hex<<int(&n)<<endl;
正如李斯特先生正确指出的那样,在printf中打印指针时应该使用%p格式字符串
您无法控制n
在内存中的位置。编译器可能会根据其他看起来不相关的东西来改变事物的定位方式。这并不重要。你无权说n
应该去哪里;其他东西可能已经在你想放的地方了。
假设您不是指空白的差异。在程序的每次运行中,在堆栈上分配n
的地址是不同的。否则,我觉得一切都还可以!
相关文章:
- 带有 cout 的指针在C++
- cout 指针时的实际数字
- 指针变量在 cout 函数中不起作用
- printf() 和 std::cout 在指针方面的区别
- 打印空指针时,std::cout 可以打印 "NULL" 而不是 0 吗?
- 为什么 cout 语句在传递指向函数的指针时没有执行?
- 为什么取消引用的指针指向指针的 std::cout 会导致 -fsanitize=地址投诉?
- 将空指针写入 std::cout 可防止以后的写入
- 带有 cout 和指针的运算符优先级
- C++ Cout 在使用指针时崩溃
- Cout删除了(未签名的字符)指针,给了我意外的结果
- C++:带有cout和指向char的指针的无法解释的行为
- cout一个字符串流,但打印一个指针
- 使用COUT带有指针值的错误
- std :: cout null char*指针中止该程序
- 超载COUT查看指针内部的内容
- c++奇怪的std::cout使用指针的行为
- 变量的指针和cout地址
- 对象层次结构员工程序 - 取消引用 cout 的指针
- 为什么 printf() 在指针中显示与 cout 不同的地址输出C++