C++ 中的字符指针

2024-01-01

我对 C++ 中的字符指针有疑问。每当我们在 C++ 中创建字符指针时:char *p="How are you doing", p 应该包含保存值“how are you getting”的内存位置的地址。

但是,我对示例代码和输出感到困惑。为什么cout<<p返回整个字符串?它应该给出内存地址的值。其次,为什么cout<<*p只给出字符串的第一个字符?

Code:

#include <iostream>
using namespace std;

int main () {

const char *str = "how are you\n";
int i[]={1,2,3};


 cout << str << endl;   // << is defined on char *.
 cout << i << endl;
 cout << *str << endl;

}

OUTPUT:

how are you

0xbfac1eb0

h

如果你想打印地址,那么你必须投射char* to void*, as

const char *str = "how are you\n"; 
cout << (void*) str << endl; 

在演员阵容缺席的情况下,cout sees str as const char*(事实上​​是这样)等等cout认为您打算打印以 null 结尾的字符串!

想想:如果你愿意的话coud << str要打印地址,如何打印字符串本身?

--

无论如何,这里有更详细的解释:

operator<<已超载char*void* :

//first overload : free standing function
basic_ostream<char, _Traits>& operator<<(basic_ostream<char, _Traits>& _Ostr, const char *_Val);

//second overload : a member of basic_ostream<>
_Myt& operator<<(const void *_Val);

在没有强制转换的情况下,第一个重载会被调用,但是当你强制转换为void*,第二个重载被调用!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 中的字符指针 的相关文章

随机推荐

  • 在 UpSetR 中使用矩阵点的调色板

    下面我构建了一个心烦意乱的情节 https www ncbi nlm nih gov pmc articles PMC4720993 我使用调色板来定义条形颜色 有没有办法对连接点的矩阵也做到这一点 library dplyr librar
  • “netcoreapp1.0”是不受支持的框架。 - Asp.Net Core 音乐商店

    我只是第一次尝试 asp net core 打开刚刚更新的音乐商店应用程序 https github com aspnet MusicStore但我无法构建 Nuget 告诉我 Errors in C development MusicSt
  • Spring Boot 基于角色的身份验证

    我有一个关于 Spring Boot 基于角色的身份验证的问题 基本上 我希望拥有用户和管理员 并且我想阻止用户访问管理资源 所以我创建了一个 SecurityConfig 类 package test import org springf
  • Javascript:将字符串拆分为二维数组

    我有一串月份和年份 var months 2010 1 2010 3 2011 4 2011 7 我想将其制作成一个二维数组 其中年份位于每个数组的第一个位置 月份位于第二个位置 换句话说 我想以这样的方式结束 var monthArray
  • IOS 应用程序加载器显示捆绑错误

    我已经浪费了3天的时间 解决 这个问题 实际上我已经尝试了我能想象到的一切 但一无所获 当我的应用程序二进制上传时 我收到以下错误 错误 ITMS 9000 此捆绑包无效 armv7 需要包含 armv7 架构 在软件资产 软件资产 MZI
  • 如何禁用特定 @FeignClient 上的 eureka 查找

    我有一个微服务使用 FeignClient主要是与其他微服务对话 使用 Eureka 服务发现机制可以完美地实现这一点 现在我迫切需要使用 FeignClient连接到外部系统并仍然使用如下所示的配置执行负载平衡 Feign client
  • WPF MEF + Prism 初始区域加载

    我在 WPF 中使用 MEF 和 Prism 编写了一个具有三个不同区域的 MVVM 应用程序 代码跨两个模块 在 App Config 中发现 我的所有导航命令和结构都工作得很好 但我感到困惑的一件事是如何设置在应用程序启动时加载到每个区
  • 如何在不序列化的情况下将对象作为输入传递给 WorkManager?

    我需要将复杂的对象传递给 WorkManager 或者我需要序列化包含 Livedata 和 Date 的对象 它抛出 java lang IllegalArgumentException Key cabId2 has invalid ty
  • R 中嵌套随机效应模型的模型预测?

    我正在尝试拟合具有随机效应的混合模型 lmer基于数据集 df 的模型这个例子在这里 https stackoverflow com a 76510072 7258020 但是 我遇到了一个错误 指出 times 参数无效 有关如何修复它的
  • 强制打开“另存为...”弹出窗口,在文本链接中打开,单击查看 HTML 格式的 PDF

    我的网站上有一些大尺寸的 PDF 目录 我需要将它们链接为下载 当我用谷歌搜索时 我发现了下面提到的这样的事情 它应该打开 另存为 点击链接时弹出 但它不起作用 当我链接到如下文件时 它只是链接到文件并尝试打开该文件 a href file
  • Java中解析固定宽度文本日志的策略

    我试图找出如何最好地解析以下日志文 件 分割由水平线分隔的每个部分并提取各种数据 例如 COMPANY123 BIMMU 日期 2 18 等 然后创建一个字符串 其中包含由水平线分隔的部分中包含的所有其他数据 即 我想创建一个 语句 对象数
  • 如何关闭冻结的 SSH 会话?

    有时 由于互联网连接不良 与远程服务器的 SSH 会话会无限期冻结 是否可以在不关闭终端的情况下关闭会话 按以下三个键 Enter 波形符 时期 这是 断开连接 功能 如ESCAPE CHARACTERS的部分ssh man page
  • 快速聚焦文本字段

    我在注册屏幕上有 4 个文本字段 我将其设置为当用户在每个文本字段上按 下一步 时 下一个文本字段将获得焦点 代码如下 func textFieldShouldReturn textField UITextField gt Bool if
  • Enterprise Architect 项目编程语言

    在Enterprise Architect中 当我对类进行建模并指定该类的实现语言 然后在用例中使用该类的实例时 用例中实例的实现语言不是该类的实现语言 而是默认值 有没有办法让Enterprise Architect使用该类设定的实现语言
  • 输出具有多个工作表的单个 Excel 文件

    Talend Open Studio for Data Integration 中是否有一个组件能够输出单个 Excel 文件 但其中包含 2 个单独的工作表 我想将原始文件中的一些列分隔到另一个工作表中 并将另一组列分隔到第二个工作表中
  • 使用 ksoap2-android 订阅共享点 Web 服务时出现身份验证错误

    我正在编写一个Android应用程序 它将使用sharepoint 2010中lists amx服务的getlist 方法 我正在使用kso ap2 android来处理我的soap消息 当我尝试进行身份验证时 出现预期的 xmlpullp
  • AlarmManager 阻塞主线程

    我已经实现了一个调用服务的 AlarmManager 问题是 虽然我在 AsyncTask 中启动它 但它阻塞了主线程 这是我的 AsyncTask 的来源 private class NotificationsServiceTask ex
  • 按最大大小将 numpy 数组拆分为块

    我有一些very大型二维 numpy 数组 一个数据集有 55732 x 257659 个元素 超过 140 亿个元素 因为有些操作我需要执行 throwMemoryErrors 我想尝试将数组分割成一定大小的块 然后针对这些块运行它们 我
  • 我们可以在 Android 中通过用户的电话号码找到用户吗?

    Android 中是否可以通过用户的电话号码找到用户 如果可以向用户发送短信 那么我们还可以检索或了解发送短信的用户的位置 我的意思是是否可以对以下功能进行编程 应用程序发送短信到用户的手机 应用程序在用户的手机上接收来自短信发送者的短信
  • C++ 中的字符指针

    我对 C 中的字符指针有疑问 每当我们在 C 中创建字符指针时 char p How are you doing p 应该包含保存值 how are you getting 的内存位置的地址 但是 我对示例代码和输出感到困惑 为什么cout