C++如何打印一个字符的地址
来源:互联网 发布:数据有效性下拉日期 编辑:程序博客网 时间:2024/06/05 02:57
#include<iostream>using namespace std;int main(){ int x = 1; int* p_int = &x; cout << &x << " " << p_int << endl; char ch = '1'; char* p_char = &ch; cout << &ch << " " << p_char << endl; return 0;}
输出如下:
006FF9FC 006FF9FC
1烫烫烫烫o 1烫烫烫烫o
对于一个int类型,通过指向它的指针或直接&进行取地址,可以很轻松的输出其地址。但是对于char类型,输出的内容竟然是乱码,查阅资料发现:C++标准库中I/O类对输出操作符<<重载,在遇到字符型指针时会将其当做字符串名来处理,输出指针所指的字符串。
由此对于上面这个问题有两种解决方案:
(1)使用C的格式化输出
printf("%x\n", p_char);printf("%x\n", &ch);
(2)强制char *转换成void *
cout << static_cast<void*>(p_char) << endl;cout << static_cast<void*>(&ch) << endl;
一块连续的内存,从低地址到高地址,输出的内存地址是其低地址。这块区域的内存保存的内容是一样的,区别就是我们以何种数据类型去解释它(从C的malloc就可以看出)。
int x = 1;int* p = &x;char* pp = (char*)p;cout << p << endl;cout << static_cast<void*>(p) << endl;
上述代码输出的地址相同,都是内存的低地址。
1 0
- C++如何打印一个字符的地址
- 如何打印一个变量指定部分的字符
- 【c++】c++中如何打印字符串的地址
- 【笔记】c c++如何打印变量地址
- Swift如何打印对象内存地址(Swift嵌套函数的一个特点)
- C语言如何打印一个数组排列组合?
- 如何打印类成员函数的地址
- 打印一个字符矩阵
- 如何打印内存地址
- C地址打印
- c打印字符 '是'
- 算法3:给一个字符数组(a-z),如何打印该数组成员构成集合的全部子集合
- C:链表的操作,如何创建一个链表并打印
- C语言程序设计习题1-17 编写一个程序,打印长度大于80个字符的所有输入行
- 打印一个字符串里面所有的字符出现的次数
- C中一个有趣的打印
- C primer plus 第七章 练习2: 编写一个程序,该程序读取输入直到遇到#字符。使程序打印每个输入的字符以及它的十进制ASCII码。每行打印8个字符/编码对。
- 【原创】打印一个string 字符串中重复字符的次数
- ubuntu16.04下NVIDIA GTX965M显卡驱动PPA安装
- python中sys.argv参数用法实例分析
- Android 下拉搜索提示框的实现
- 【OI练习】单词查找树
- Spring_mvc ioc/DI 控制反转与依赖注入
- C++如何打印一个字符的地址
- Android支持java8的设置方法
- window.open()打开的窗口用window.opener()在chrome浏览器下失败的原因
- SSD训练自己的数据集
- 使用阿里maven仓库配置
- Linux 内核设备驱动之GPIO驱动之GPIO 管脚描述
- java 执行控制语句
- sql Server中SET QUOTED_IDENTIFIER的使用
- 分布式锁