栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

想用 cout 输出地址时,为什么要将 char 型数组名(可解释为指针)和指向 char 型的指针强制转换为其他类型的指针?

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

想用 cout 输出地址时,为什么要将 char 型数组名(可解释为指针)和指向 char 型的指针强制转换为其他类型的指针?

一、简述

最近又发现了之前学习时所遗漏的疑点:想用 cout 输出地址时,为什么要将 char 型数组名(可解释为指针)和指向 char 型的指针强制转换为其他类型的指针?

二、详细说明

小白通过学习可能知道这一点:数组名可被解释为指针,而指针的内容是一个地址。那么,既然是地址,为什么就不能直接用其输出地址呢?
能遇到这样的困惑,大概就是忽略了一个点:如果给 cout 提供一个字符的地址,则它将从该字符开始打印,直到遇到空字符。由此可见,如果直接利用指针输出的话,得到的将不会是我们想要的地址。而且, int ,double 等指向其他类型的指针就不会遇到这种问题,所以我们就将指向 char 型的指针强制转换为指向其他类型的指针。

三、示例

1.采用直接输出

	char name[] = "cat";
	char* pt = name;

	cout << "直接输出 name: " << name << ",    ";
	cout << "直接输出 pt: " << pt << endl;

结果为:

直接输出 name: cat,    直接输出 pt: cat

2.采用强制转换后输出

	char name[] = "cat";
	char* pt = name;

	cout << "强制转换后 name: " << (int *)name << ",    ";
	cout << "强制转换后 pt: " << (double *)pt << endl;

结果为:

强制转换后 name: 00F6FE68,    强制转换后 pt: 00F6FE68

ps:
如果本文没有帮助到大家,可以评论或私信,我会在我已有的知识基础上对其进行补充~我是一个小白,我爱编程,这些 C++ 笔记如有错误,请指出~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/768824.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号