c char 指针问题

2024-03-13

如果我们声明char * p="hello";那么由于它被写入数据部分,我们无法修改p指向的内容,但我们可以修改指针本身。但我在 C Traps and Pitfalls 中找到了这个例子 安德鲁·科尼格 AT&T贝尔实验室 默里山, 新泽西州 07974

例子是

char *p, *q;
p = "xyz";
q = p;
q[1] = ’Y’;

q 将指向包含字符串 xYz 的内存。 p 也是如此,因为 p 和 q 指向同一内存。

如果我提到的第一个陈述也是正确的,那它又如何呢? 同样我运行了以下代码

main()
{
char *p="hai friends",*p1;
p1=p;
while(*p!='\0') ++*p++;
printf("%s %s",p,p1);
}

并得到输出为ibj!gsjfoet

请解释一下在这两种情况下我们如何能够修改内容? 提前致谢


您的相同示例会导致我的系统出现分段错误。

您在这里遇到了未定义的行为。.data(请注意,字符串文字可能位于.text也)不一定是不可变的 - 不能保证机器会写保护该内存(通过页表),具体取决于操作系统和编译器。

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

c char 指针问题 的相关文章

随机推荐

  • 如何将对象文字作为聚合物属性传递

    为了单独测试我的一些聚合物自定义元素 我希望能够传入 js 对象文字来获取通常来自父元素的一些属性 我很难弄清楚如何做到这一点 请参阅此示例代码 如果它按照我希望的方式工作 它会显示一个 1 和一个 2 彼此相邻 但它不起作用
  • 如何在可内容编辑的 DIV 中查找光标位置?

    我正在为内容可编辑 DIV 编写一个自动完成器 需要在文本框中呈现 html 内容 因此更喜欢使用 contenteditable DIV 而不是 TEXTAREA 现在我需要在 DIV 中有 keyup keydown click 事件时
  • 对于自定义表单组件,是否可以使用 DefaultValueAccessor 而不是 ControlValueAccessor?

    我需要能够使用formControlName我的自定义组件的指令 我一直在阅读有关实施的多个SO问题ControlValueAccessor对于一个子组件来说 这一切看起来都非常脆弱 很多例子都在转变 div or span 元素转换为表单
  • ReactforwardRef 似乎不适用于 bootstrap Overlay

    根据React Bootstrap 覆盖文档 https react bootstrap github io components overlays 覆盖的目标应该是the element the overlay is positioned
  • Firefox 中未定义 Intl

    我有以下java脚本代码 它在chrome中运行良好 但在firefox和IE中运行失败 FF 的错误消息是 ReferenceError Intl is not Define IE 的错误消息是 SCRIPT5009 Intl 未定义 我
  • gettext,如何处理同音异义词?

    使用 gettext 单值 echo gettext Hello world n Plurals printf ngettext d comment d comments n n 英文同音字 echo gettext Letter as i
  • 交互运行 cypress 命令

    是否可以打开浏览器并交互运行 cypress 测试命令 类似于使用scriptsChrome 开发者工具中的选项卡 每次启动浏览器运行测试花费的时间太长 我理解这种痛苦 但据我所知 赛普拉斯的自动扫描功能会在您更新测试时 重新运行 测试 换
  • 如何使用 python 跳过数据集数据类型错误的行

    一直致力于数据集清理和处理数据以进行进一步分析 我使用了不同的清理脚本 每当数据集列之间出现任何不需要的 异常数据时 我的脚本就会中止 脚本执行会卡住并且其余数据不会得到处理 我尝试使用的脚本 import pandas as pd imp
  • 如何在 git-commit 上的 vim 中启用拼写检查

    我正在尝试在 Vim 中启用该拼写 以防编辑 git 提交消息 文件名是固定的 因此 autocmd 没有帮助 我在最初的消息中放置了一个模型行 但是ftpplugin gitcommit vim禁用模型行 为 git commit 情况自
  • 将数组作为结构体访问 *

    这是其中之一我认为这应该有效 但最好检查一下问题 它在我的机器上编译并运行良好 这是否保证达到我的预期 即允许我访问数组的前几个元素 并保证结构的布局 对齐 填充等与数组相同 struct thingStruct int a int b i
  • 使用 JPA 的 select 子句中的 Suqueries

    我需要使用 Apache Openjpa 2 在 select 子句中执行子查询 JPA 是否支持 SELECT 子句中的子查询 我的查询是这样的 SELECT t date t value SELECT COUNT DISTINCT t2
  • Signalr - 无法读取服务器上的查询字符串

    我在这里要疯了 我完成了 chatHub 教程 一切正常 我连接到服务器 我可以向每个客户广播一条消息 然后我尝试添加查询字符串 因为我想获得有关我的用户的一些信息 因为许多用户可以在同一会话中连接 这是我的 JavaScript func
  • 是否可以制作交互式 Rake 任务?

    我想运行一个要求用户输入的 Rake 任务 我知道我可以在命令行上提供输入 但我想询问用户是否sure他们希望继续执行特定操作 以防错误输入提供给 Rake 任务的值之一 像这样的东西可能会起作用 task action do STDOUT
  • 使用 Bash 变量代替文件作为可执行文件的输入

    我有一个可执行文件 其使用方式如下 executable v i inputFile txt o outputFile eps 为了提高效率 我想使用 Bash 变量代替输入文件 所以 我想做如下的事情 executable v i inp
  • jQuery 将 Google Adsense 附加到 div

    我遇到了 google adsense 的问题 它在我的 jQuery 之前加载并杀死了我的代码 所以我想我应该尝试使用文档准备功能将 Google Adsense javascript 附加到适当的 div 这是我尝试的代码写
  • 如何更改 TYPO3 中的页眉布局(添加一些换行 div)

    您好 我需要更改 TYPO3 中的标题布局 下图 我正在使用流体模板系统 我还找到了可以更改它的 html 文件 该文件的原始路径是 typo3 src 7 6 16 typo3 sysext fluid styled content 资源
  • Laravel 5.5 尝试使用 PHP 的 mail() 发送邮件时出错:预期响应代码 250,但得到代码“550”

    我已将站点升级到 Laravel 5 5 突然我无法再发送邮件 因为它给了我以下错误 Production ERROR 预期响应代码 250 但得到代码 550 其中 消息 550 未经过身份验证 请启用 SMTP 身份验证 电子邮件软件和
  • 使用 GCS 客户端库模拟云存储的 GAE java 上的文件 uri 是什么?

    我正在使用 Java 的 Google 应用程序引擎开发一个 Web 应用程序 我将使用 Google Cloud 存储并根据文档 https developers google com appengine docs java google
  • c getline 跳过空行

    while getline line line size f 1 I m using this function to read line line But i want to know when i m reading a blank l
  • c char 指针问题

    如果我们声明char p hello 那么由于它被写入数据部分 我们无法修改p指向的内容 但我们可以修改指针本身 但我在 C Traps and Pitfalls 中找到了这个例子 安德鲁 科尼格 AT T贝尔实验室 默里山 新泽西州 07