通过指针创建字符串

2024-04-09

我了解到指针指向内存地址,因此我可以使用它来更改该地址处设置的值。像这样:

int *pPointer = &iTuna;

pPointer这里有内存地址iTuna。所以我们可以使用pPointer改变值iTuna。如果我打印pPointer内存地址被打印,如果我打印*pPointer那么值为iTuna被打印

现在看这个程序

    char* pStr= "Hello !";
cout<< pStr << endl;
cout<< *pStr << endl;
system("PAUSE");
return 0;

这里有很多我不明白的东西:

  1. 在《你好!》每个字母单独存储,一个指针保存一个内存地址。那么如何pStr指向所有字母。

  2. 另外当我打印出来时pStr它打印Hello !,不是内存地址。

  3. 当我打印出来时*pStr它打印出来H只是不全是什么pStr也在指着。

我真的无法理解,这些都是我的担忧。我希望有人能向我解释这是如何工作的并帮助我理解


  1. "Hello !" is an array类型的char const[8]和价值{ 'H', 'e', 'l', 'l', 'o', ' ', '!', 0 }. pStr是指向其第一个元素的指针;它的最后一个元素的值为0.

  2. iostreams 库中存在过载char const *argument,它将参数视为指向数组第一个元素的指针,并打印每个元素,直到遇到零。 (口语中的“空终止字符串”。)

  3. 取消引用指向数组第一个元素的指针会得到数组的第一个元素,即'H'。这与pStr[0].

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

通过指针创建字符串 的相关文章

随机推荐

  • 在多个文件上循环一个函数

    我写了一个简单的函数 myfunction lt function fileName stringsAsFactors TRUE check names FALSE skip 1 Data lt read delim fileName sk
  • 更新 Microsoft Dynamics 365 CRM 中的多个记录的 Soap 请求

    我们试图在 CRM 中一次更新多个记录 但基于 wsdl 没有直接的方法可以做到这一点 一种方法是通过传递要更新的记录的 CRM ID 来更新 CRM 中的每条记录 然而 通过阅读文档 我们发现有一种方法可以运行 ExecuteMultip
  • System.IO.FileSystemWatcher 监视网络服务器文件夹 - 性能注意事项

    我想查看网络服务器上的文件夹树的更改 这些文件都有特定的扩展名 树中大约有 200 个文件夹和大约 1200 个带有我正在查看的扩展名的文件 我无法编写在服务器上运行的服务 禁止 因此解决方案必须位于客户端本地 及时性并不是特别重要 我可以
  • 键监听器与键绑定? [复制]

    这个问题在这里已经有答案了 可能的重复 比较 KeyListener 和 Key Bindings 之间的功能 https stackoverflow com questions 8664250 comparing functionalit
  • WCF路由——如何以编程方式正确添加过滤表

    我正在使用 WCF 4 路由服务 并且需要以编程方式配置该服务 而不是通过配置 我见过的这样做的例子很少见 创建一个 MessageFilterTable 如下 var filterTable new MessageFilterTable
  • 如何在 Android 中的列表视图中显示联系人(适用于 Android api 11+)

    如果这看起来像同一个问题一百万次 我很抱歉 但是谷歌搜索没有提供任何结果 只是一堆过时的教程使用managedQuery以及其他已弃用的解决方案 我经历了用于检索联系人列表的 Android 开发人员培训 http developer an
  • 有没有办法将operator.itemgetter与切片表示法一起使用?

    我在 python 列表中有一堆 numpy 数组lst 我可以对这些数组之一进行切片 通过使用以下命令对其进行索引来获取特定视图 1 例如 我需要将此切片操作应用于所有 numpy 数组lst 使用生成器理解 我可以这样做 my arra
  • Terraform - 迭代模板中的对象列表

    我在迭代由 解释的模板内的对象列表时遇到问题templatefile功能 我有以下变量 variable destinations description A list of EML Channel Destinations type li
  • 将参数放入webservlet的url中

    我正在使用 Webservlet 我想在 url 本身中传递参数 就像是 WebServlet profile id public class ProfileServlet extends HttpServlet Override publ
  • 如何重新加载当前的路线守卫?

    假设我有一条有守卫的路线AdminGuard 只有当我是管理员时才允许我进入 但是当我在那个页面上点击Logout状态通过 Observables 传播到所有应用程序中 但我仍然处于一条我不应该处于的路线中 因为我已经注销了 如何 重新激活
  • PHP 对齐数组键值

    我在 Google 上搜索了两天 并尝试查看 PHP 手册 但我仍然不记得那个对齐 PHP 数组键值的函数 我正在寻找的只是需要这个的函数 Array 0 gt 1 3 gt 2 4 gt 3 7 gt 4 9 gt 5 并将其转换成这样
  • 查找早于 FILE 的文件而不包含 FILE

    我有一个计划要使用find给我一个比某些 FILE 更旧的文件列表 然后使用xargs or exec 将文件移动到其他地方 搬东西不是问题 xargs mv trash工作正常 现在 如果我尝试使用 newer FILE then FIL
  • Django 注销问题

    这是我在 Django 身份验证中遇到的问题 访问需要登录的页面 注销 访问 django contrib auth logout 访问原始登录保护页面 您仍处于登录状态 有什么想法如何解决这个问题吗 我的 Django 会话设置是 SES
  • Gradle 自定义插件:添加扩展对象的依赖项

    我正在尝试编写一个插件来添加依赖项project dependencies根据插件扩展对象中收集的信息 但这似乎是不可能的 事实上 来自扩展对象的数据仅在新任务或project afterEvaluate关闭 但在这些地方添加的依赖项将被忽
  • 如何更改图像中的像素

    我实际上尝试执行以下操作 我已在 bitmapdata 对象中加载了外部图像 并从中创建了一个位图 我将其附加到 sprite MovieClip 以便在其上包含鼠标事件 现在 根据前面的逻辑 我加载了两个相同大小的图像 比方说圆圈 其中一
  • 区分 gcc 诊断

    我在解释 gcc 4 8 2 警告和错误时遇到问题 更准确地说 很难判断一个问题从哪里结束 另一个问题从哪里开始 我只能通过控制台访问构建机器 因此不能选择使用 IDE 我真的需要能够快速区分各个问题 有没有办法让 GCC 在不同的诊断消息
  • 如何在 Visual Studio Code 的 Zen 模式下显示选项卡?

    In Visual Studio Code how to you keep tabs the tabs from hiding when you enter Zen mode Ctrl K Z 我自己回答这个问题 因为我不得不这样做几次 而
  • Java常量示例(创建仅包含常量的java文件)

    声明只有常量的 java 文件的最佳实践是什么 public interface DeclareConstants String constant Test OR public abstract class DeclareConstants
  • PHP中虚函数的正确实现?

    在我的工作场所 仅限 php 我们有一个数据库抽象的基类 当您想要将新的数据库表添加到基础层时 您必须创建该基类的子类并重写一些方法来定义使用该表的单独行为 正常行为应该保持不变 现在我在我们公司见过很多新程序员 他们只是重写默认行为的方法
  • 通过指针创建字符串

    我了解到指针指向内存地址 因此我可以使用它来更改该地址处设置的值 像这样 int pPointer iTuna pPointer这里有内存地址iTuna 所以我们可以使用pPointer改变值iTuna 如果我打印pPointer内存地址被