当前位置: 首页 > news >正文

【c++】cout打印char * 或者char[]的细节详解

目录

 char* 类型

1.打印指向的字符串

2.打印指针指向的地址

问题描述

解决方法

char型数组

 1. 想要输出字符串

2. 想输出字符数组的地址

printf 和cout 的对比

1.打印首字符

2.打印字符串

3.打印字符串首地址

💗感谢阅读!💗


 char* 类型

1.打印指向的字符串

使用cout输出 指针,会直接打印指针指向的具体内容!

const char* a = "abcd";
cout << a << endl;

2.打印指针指向的地址

问题描述

c++中如果给cout提供一个指针,它将输出该指针指向的地址(指针和地址在表现形式上是一样的)

但是如果该指针的类型是char*或者uchar*,则cout会打印该指针指向的具体内容!!

如图,就出现了以上情况。

解决方法

如果要打印char*或者uchar*所指向的地址,强制转换成 int*  或者 void*  即可

const char* a = "abcd";
cout << a << endl;cout << "int*强转:" << (int*)a << endl;
cout << "void*强转:" << (void*)a << endl;


char型数组

 1. 想要输出字符串

采用 cout<<数组名; 系统会将数组当作字符串来输出,如:

char b[] = "abcdef";
cout << b << endl;

2. 想输出字符数组的地址

则需要进行强制转换,添加 void*  或者  int*  如:

char b[] = "abcdef";
cout << b << endl;cout << "强转:" << (void*)b << endl;
cout << "强转:" << (int*)b << endl;

printf 和cout 的对比

相比于cout ,printf可以根本解决问题,并且使用更加清晰!

1.打印首字符

const char* a = "abcd";printf("首字符:%c\n", *a);
cout << *a << endl;

2.打印字符串

const char* a = "abcd";printf("字符串:%s\n", a);
cout << a << endl;

3.打印字符串首地址

const char* a = "abcd";printf("a存储的地址: %p\n", a);	
cout << "int*强转:" << (int*)a << endl;
cout << "void*强转:" << (void*)a << endl;

 全部总结:

const char* a = "abcd";
cout << a << endl;printf("首字符:%c\n", *a);
cout << *a << endl;printf("字符串:%s\n", a);
cout << a << endl;printf("a存储的地址: %p\n", a);	
cout << "int*强转:" << (int*)a << endl;
cout << "void*强转:" << (void*)a << endl;

💗感谢阅读!💗


相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java中的事件驱动架构(EDA)
  • 面相对象的成员介绍
  • C# 什么是属性
  • 使用twilio向手机发短信做监控报警
  • 协议转换桥+高速协议传输终端
  • 【解决】CentOS7 生命周期结束后 使用 yum命令报错问题
  • 系统运维方案书(Word原件)
  • DNS部署与安全
  • esp8266根据httpserver状态,调用网络唤醒,实现一键开机
  • C++学习, 指针的指针
  • 5G智慧工地项目汇报方案
  • 深入理解Java序列化:从入门到实践
  • C++中函数重载的原理
  • vscode go开发环境
  • 硬盘的照片不小心删除怎么恢复 移动硬盘删除图片怎么恢复 数据恢复软件哪个好用
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【技术性】Search知识
  • angular2 简述
  • CentOS 7 修改主机名
  • Create React App 使用
  • ERLANG 网工修炼笔记 ---- UDP
  • Git初体验
  • IndexedDB
  • Intervention/image 图片处理扩展包的安装和使用
  • JavaScript-Array类型
  • MySQL几个简单SQL的优化
  • node-glob通配符
  • python学习笔记 - ThreadLocal
  • socket.io+express实现聊天室的思考(三)
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • vue2.0一起在懵逼的海洋里越陷越深(四)
  • vue-loader 源码解析系列之 selector
  • 从伪并行的 Python 多线程说起
  • 技术:超级实用的电脑小技巧
  • 写给高年级小学生看的《Bash 指南》
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 栈实现走出迷宫(C++)
  • 走向全栈之MongoDB的使用
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 选择阿里云数据库HBase版十大理由
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • (阿里云万网)-域名注册购买实名流程
  • (苍穹外卖)day03菜品管理
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (附源码)ssm码农论坛 毕业设计 231126
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (函数)颠倒字符串顺序(C语言)
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (三) diretfbrc详解
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (五)关系数据库标准语言SQL
  • (新)网络工程师考点串讲与真题详解