指针和字符串常量

how2heap 深入学习(1) how2heap glibc 2.23学习 阅读详情

指针和字符串常量

首先比较两段代码

代码1

    char ch1[] = "hello";
    *ch1 = 'H';            //OK
    ch1[0] = 'H';          //OK
    printf("%s\r\n",ch1);

代码2

    char *ch2 = "world";
    *ch2 = 'W';            //运行时错误
    ch2[0] = 'W';          //运行时错误
    printf("%s\r\n",ch2);

这里的“world”是字符串常量,而“hello”不是。

代码2里,*ch2和ch2[0]其实就是指‘w’,而‘w’是常量自然无法修改!

一般定义成 const char * = “world”;避免上述运行时的错误。

如果想修改字符串的值,就应该定义成代码1的形式!或者如下在堆上申请:

    char *s = (char *)malloc(sizeof(char)*6);
    strcpy(s, "hello");
    s[0] = 'H';
    printf("%s\r\n", s);
这个“hello”也不是一个字符串常量,因为是在堆上申请的,也可以用指针来读和写!

ROS 2 Humble + Gazebo Fortress 搭建AGV小车仿真环境(保姆级避坑指南) 本文详细介绍了如何使用ROS 2 Humble和Gazebo Fortress搭建AGV小车仿真环境,包括环境准备、URDF模型构建、ROS 2控制集成、传感器配置等关键步骤。特别针对Gazebo Fortress版本差异提供了保姆级避坑指南,帮助开发者快速解决常见问题并优化性能。 阅读详情

相关推荐

3DE重客户端安装

3DE重客户端安装

m0_48170265的博客 9427

关于字符串常量指针

一、 char *p = "abcd"; *p = 'b'; printf("%c\n", p[0]); 以上代码有什么问题?   首先,编译器在常量区保存一个字符串abcd,其内容不许修改。 char *p = "abcd"; //p是一个指针,直接指向常量区,修改p[0]就是修改常量区的内容,这是不允许的。 char p[] = "abcd"; // 编译器在栈上创建一个

mazi的博客 2189

[ensp报错:USG6000V错误代码45解决方案]

[ensp报错:USG6000V:错误代码45解决] [ensp报错:USG6000V:错误代码45解决] 第一种处理方式: ensp的45错误帮助文档里的解决方法:(这里就不说了,上华为爸爸的图) ensp的45错误:如果你的45错误不是描述的那个,可能是ensp与virtualbox不兼容了。 错误描述:具体表现为在virtualbox里没有vfw_usg的条目,虚拟介质管理器里也没有相应的条目: 就是vfw_usg_vdi这个 这种情况下你把ensp卸载重装多少次都没用,原因在两个软件的兼容

weixin_45456536的博客 3万+

指针与字符串常量

指针与字符串常量 选择为真的表达式: char str1[] = “abc”; char str2[] = “abc”; const char str3[] = “abc”; const char str4[] = “abc”; const char *str5 = “abc”; const char *str6 = “abc”; char *str7 = “abc”; char *str8 = “abc”; A、str1 == str2 B、str3 == str4 C、str5 =

一只笨蛋的博客 4963

pycharm下载continue插件接入DeepSeek的API,向其提问输出乱码,如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 2220

Unity小游戏接入抖音敏感词检测

摘要: 本文介绍了Unity小游戏接入抖音敏感词检测的方法。抖音官方提供了两种API:SensitiveWordCheck用于检测敏感词,ReplaceSensitiveWords用于替换敏感词。此外,若使用键盘输入事件,可通过tt.onKeyboardComplete监听回调,平台会自动屏蔽敏感词(替换为*)。接入官方字库可有效避免审核驳回,适用于小游戏中的用户输入功能(如起名系统)。附官方文档链接及参数说明。

类人_猿的博客 4594

攻克C语言难点:字符串常量、字符数组与指针深入原理

内容包含: ▪字符 ▪字符串常量 ▪字符数组和字符指针 大家是否想过这些问题?字符串和单个字符有什么区别?字符串是就是一大堆字符合在一起嘛? 字符串怎么存储?存储在哪里? 下面我们来逐个讨论一下 ▪字符 字符的表示形式:在C语言中字符的表示形式有两种,一是字符的字符形式,二是字符的编码形式。 字符集为每一个字符分配了唯一存在的编号(编码值)。 在C语言中,一个字符除了可以用字符形式来表示(如字符’a’的字符形式:a) 也可以用它的编...

博客 1102

OpenClaw与大语言模型(Claude/GPT/MiniMax)的集成架构与最优配置策略

摘要 本文探讨了OpenClaw框架与大语言模型(Claude/GPT/MiniMax)的集成架构与优化策略。大语言模型具有强大的自然语言处理能力,但集成面临API成本、响应延迟、上下文管理等挑战。OpenClaw采用分层架构设计,包括用户界面层、对话管理层、提示工程层、模型适配层和API调用层,支持多模型切换、智能对话管理和成本控制。系统通过模型适配层实现不同API的统一调用,并提供缓存、监控等优化机制。该集成方案能够充分发挥大语言模型的优势,为本地AI助理提供更智能的服务。

一键难忘的博客 1693

微软数据科学面试全流程解析与高频考点

数据科学面试是算法能力、统计思维与工程实践的综合检验,其核心围绕概率建模、SQL/Python编码、A/B测试设计及业务问题拆解展开。理解假设检验原理与特征工程逻辑,能显著提升模型评估的严谨性;掌握真实场景下的指标归因与实验分析方法,则直接决定技术方案的落地价值。这类能力广泛应用于互联网大厂的数据岗选拔,尤其在微软等强调系统化思维与跨团队协作的企业中,行为问题与案例推演常与技术考察深度交织。本文基于多轮真实面试复盘,聚焦高频题型、典型陷阱与可迁移的解题框架。

diyudong4681的博客 627

自私兽群优化器(SHO)详解:从生物本能到智能优化

自私兽群优化器(SHO)是一种受动物群体自私行为启发的智能优化算法。该算法模拟动物在捕食威胁下的两种行为:聚集行为(全局搜索)和自私行为(局部搜索),将优化问题的解空间映射为生存环境,候选解视为猎物个体。SHO通过安全性评估将猎物分为安全、危险和高危三类,分别采用不同的位置更新策略,并引入捕食者角色增加选择压力。相比传统优化算法,SHO具有无需梯度信息、自适应平衡探索与开发、参数简单等优势,特别适合高维复杂和多模态优化问题。算法通过马尔可夫链理论保证收敛性,已在工程设计和数据挖掘等领域展现出良好性能。

qq_42212808的博客 196

Winform从入门到精通(21)——ProgressBar(史上最全)

本介绍ProgressBar控件的详细用法,包含所有属性、事件,绝对史上最全!

qq_34059233的博客 3350

C:字符串、字符串指针、字符串函数

在 C 语言中,字符串实际上是使用 空字符 \0 结尾的 一维字符数组。因此,\0 是用于标记字符串的结束。空字符()又称结束符,缩写 NUL,是一个数值为 0 的控制字符,\0 是转义字符,意思是告诉编译器,这不是字符 0,而是 空字符。 C 编译器会在初始化数组时,自动把 \0 放在字符串的末尾。 每个字符用一个地址来存储。 ———— 字符数组 只有在定义时才可一次性赋值,一旦定义完就只能一个个赋值,如: 二、字符串指针(指向字符串的指针) 那这两种写法有什么区别么?在内存中存储区域不同,字符数组

long_steve的博客 2064

【测开求职】面试题:计算机网络 详细版整理

本篇文章是笔者为准备研究生复试和校招而写,因此主要针对问答,注重理解,而不在于细节计算。读者可以先查看上面的链接走一遍计算机网络的整体框架结构。其中,重点难点以及易混淆的知识点,笔者会用其他文章进行了详述,在知识点处贴好了链接,有需要的可以查阅。

vector的博客 5936

05 指向字符串的指针、字符串常量指针、常量指针和指针常量区别

参考链接:https://blog.youkuaiyun.com/lee_u/article/details/52374265 https://blog.youkuaiyun.com/usstmiracle/article/details/79539359 一、基础知识 指向字符串的指针 1: 什么是字符串:用双引号括起来的0个或多个字符。“123” 2: 字符串的结束符号’\0’ '\0’它是一个字符,不是一个字符串 ...

博雅勇士的博客 3456

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C语言中的指针和字符串常量区

本文介绍了 C 语言中指针和字符串常量区的概念、特点及使用方法,并分别讨论了指针与字符串常量区的概念,下面是关于如何避免常见错误的内容。

weixin_45459266的博客 745

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

字符串常量,数组和指针的不同形式,以及和整数常量的区别

字符串"hello"在内存中是一个字符数组,并且存储在常量区域中(对于指针的情况)。对于字符数组(如s1[]),会在栈中复制该字符串的内容,允许修改。对于字符串常量(如s2),指针指向常量字符串区域,它们是不可修改的。

qq_53206057的博客 449

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

字符串常量和常量指针

const char* p = "hello"; // 指向 "字符串常量" char* const p = "hello"; // 指向字符串的" 常量的指针" char const * 和 const char* 是一样的. const 的位置在char左边还是右边都一样. 常量指针的const应当写在 *星号的右边. 指向常量字符串的常量指针的写法是 const ch

qq1714231849的博客 285

字符串常量指针、常量指针和指针常量的区别

char *p = "hello"; *p = 'a'; printf("%s\n", p); 字符串“hello”保存在常量区,其内容不许修改。 char *p = "hello"; // p是一个指针,直接指向常量区,修改p[0]就是修改常量区的内容,这是不允许的。 char p[] = "hello"; // 编译器在栈上创建一个字符串p,把abcd从常量区复制到p,修改p[0]就相当于修...

jeason的博客 2259

指针指向字符串常量和给字符数组赋值字符串常量的本质

众所周知任何类型的指针在32位模式下大小都为4BYTE,很多人对数组和指针并不能很好的区分它们的区别,首先在C语言层面,数组名是一个常量不可修改,而指针可以随意指向,其次如果在a.cpp中定义了 char a[100]; 的全局变量 在main.cpp中声明了一个 extern char*a ; 有些变成经验的人就能看出来 cha a[100] 开辟的空间是 100*int类型的大小 而extern char* a告诉编译器 有一个 a类型是 char* 大小是4...

taolaodawho的博客 1916

c中数组常量字符串和指针常量字符串的区别

常量字符串例如“abcde”这种的系统会将他们放在常量区,而常量区就是意味着不能修改的,只可以读取的数据区域,并且相同常量字符串只有一份。void string2(){ char* p = "abcde"; printf("%p\n", p); char*p1 = "abcde"; printf("%p\n", p1);}如上,p1和p的地址是一样的,他们都指向的是同一个常量向量,这是编译器做的优...

qianyayun19921028的博客 1696

字符串常量指针、常量指针和指针常量区别

char *p = "abcd"; *p = 'b'; printf("%c\n", p[0]); 以上代码有什么问题?    首先,编译器在常量区保存一个字符串abcd,其内容不许修改。 char *p = "abcd"; // p是一个指针,直接指向常量区,修改p[0]就是修改常量区的内容,这是不允许的。 char p[] = "abcd"; // 编译器在栈上创建一个字符

lee_u的博客 5831

关于字符串常量和字符指针

char *p和 char p[]的区别和字符串常量 void main() { char *p="abc123ABC";//char p[]="abc123ABC" p[0]='d'; } 上面这段代码编译链接都没问题,但是运行时错误。 将char *改成char p[]="abc123ABC"就正确了。原因如下:赋值号右端是一个字符串常量,分配在进程的只读常量数据区,然后将只读常量的地址值赋给

zhangkunhn的专栏 555

C语言指针——字符指针变量(常量字符串和 变量字符串)

但是在3 4 里面是指针指向的一个空间 就算后期修改 也是在一个空间进行修改。这里解释一下 就是 因为字符串的内容是一样的。在str1和str2里面 是开辟两个空间。这两不是同一个首元素地址。首先 很显然是不相同的。因为开辟的不是一个空间。不想相同的根本原因是。

Jason_from_China的博客 536

C++指针和数组以及字符串常量的类型

指针和数组名 参考:《c专家编程》 程序中所有的变量名或者数组名在重定位之后都只是一个地址值而已,所有引用这些变量的地方都会被替换成一个地址值。 数组名仅仅是一个标号而已,没有额外的内存存储这个值,它的值存在于符号表。它仅仅是一个地址,这也是为什么数组名不能被赋值的原因(数组名是右值)。经过重定位之后,数组名已经完全是地址值了,程序中对a访问就等价于访问a的地址。 指针本身占用额外的空间,这个空间存储的是某个变量的地址,同时指针变量本身也是一个标号,这个标号的值存在符号表中。存储指针变量是的内存空间,这个

jacocheung的博客 544

C和指针 第13章 高级指针话题 13.5 字符串常量

C和指针 第13章 高级指针话题 13.5 字符串常量

weixin_客子光阴的博客 229

字符串与字符串常量和指针的关系

字符串常量存储在静态区域,不可以进行

u011846436的专栏 604
上一篇: 15道使用频率极高的基础算法题
下一篇: 最长公共字串
devil_pull
博客等级 码龄15年 12粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值