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

 

 常量字符串和 变量字符串

 常量字符串和变量字符串是在编程中常见的两种字符串类型,它们有以下区别:

  1. 值的不可变性:常量字符串的值是不可变的,一旦被定义,就不能修改。而变量字符串的值是可变的,可以随时修改。

 常量字符串1:

const char* constantString = "Hello, World!";在上述代码中,“Hello, World!” 是一个常量字符串,其值不可修改。

变量字符串1:

char variableString[] = "Hello, World!";在上述代码中,variableString 是一个变量字符串,其值可以修改。存储方式:常量字符串通常存储在只读内存区域,而变量字符串通常存储在可读写的内存区域。

常量字符串2:

const char* constantString = "Hello, World!";在上述代码中,“Hello, World!” 是一个常量字符串,它通常存储在只读内存区域。

变量字符串2:

char variableString[] = "Hello, World!";在上述代码中,variableString 是一个变量字符串,它通常存储在可读写的内存区域。内存分配方式:常量字符串通常在编译时就被分配内存空间,而变量字符串通常在运行时动态分配内存空间。

常量字符串3:

const char* constantString = "Hello, World!";在上述代码中,“Hello, World!” 是一个常量字符串,它在编译时就被分配了内存空间。

变量字符串3:

char variableString[] = "Hello, World!";在上述代码中,variableString 是一个变量字符串,它在运行时动态分配了内存空间。

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————

常量字符串和 变量字符串地址对比

首先 很显然是不相同的

这里开始做出解释 

不想相同的根本原因是

在str1和str2里面  是开辟两个空间

但是在3 4 里面是指针指向的一个空间 就算后期修改 也是在一个空间进行修改 

这里解释一下 就是 因为字符串的内容是一样的

也就是说

在C语言中,字符串通常是由字符数组实现的,即一串连续的字符。当你有两个字符串指针,它们指向的内容是一样的,这意味着它们都指向了存储相同字符序列的内存地址。然而,这并不意味着两个指针指向的空间是一样的。

在这个例子中,str3和str4指向的内容是一样的,因为它们都指向了同一个字符串字面量"hello"。但是,str1和str2本身是两个不同的指针变量,它们在内存中占据不同的位置。当你打印它们的地址时,你会发现它们是不同的。
指针的值是内存地址,而指针指向的内容是存储在那个地址中的值。即使两个指针指向的内容相同,它们指向的空间(即指针变量的内存地址)也是不同的。这是指针和引用之间的一个重要区别:在C++中,引用是与目标数据同生的别名,所以如果两个引用指向同一个对象,它们引用的实际上是同一个内存位置。但在C语言中,指针只是指向内存地址的变量,它们可以被赋予相同的值,但它们本身是独立的。

这两不是同一个首元素地址

因为开辟的不是一个空间

图解 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/731730.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

重建大师6.2版本的建模效果出现下图中模糊的情况,是什么原因?

可能是因为坐标原点设置的不对,图例中的三角网都出现了精度损失的问题。 坐标原点设置的具体操作:提交产品后,在弹出的界面,可以设定坐标原点。 重建大师是一款专为超大规模实景三维数据生产而设计的集群并行处理软件&#xff0…

【Python】FTP库的介绍及用法

目录 1、应用场景 2、FTP-标准库 1、应用场景 FTP库(ftplib)在Python中的应用场景主要包括: 文件上传和下载: 通过FTP服务器,可以提供用于上传和下载文件的功能。这在需要在服务器和客户端之间共享数据的情况下非常…

C语言之练手题

题目1: 思路:我们定义两个变量left和right分别为数组的左端下标和右端下标。 左端下标的元素为奇数时,left继续往前走,为偶数时就停下 右端下标的元素为偶数时,right- -往回走,为奇数时停下 停下后对应的元…

(3)应用与信息

文章目录 前言 3.1 FlightDeck FrSky发射器应用程序 3.2 MAVLink2数据包签名(安全) 3.3 MAVLink高延迟协议 3.4 无线地面站连接中继器 1 概述 2 组件 3 设置 3.5 遥测无线电区域条例 3.6 用于OpenTX的Yaapu遥测脚本 前言 FlightDeck FrSky Transmitter AppMAVLink2 …

太平医康养经理人是医疗资源的链接者

太平人寿通过构建资源整合平台,已成功将国际化医疗服务资源进行深度整合。目前,该公司已完成对英国著名医疗集团Circle Health在中国设立的首家医疗机构——圆和医疗的增资行动,并与新加坡知名的莱佛士私立综合医疗集团签订了业务合作协议。同…

js 中 callee 与 caller 的作用

1.caller 返回一个调用当前函数的引用 如果是由顶层调用的话 则返回 null (举个栗子哈 caller 给你打电话的人 谁给你打电话了 谁调用了你 很显然是下面 a 函数的执行 只有在打电话的时候你才能知道打电话的人是谁 所以对于函数来说 只有 caller 在函数执行的时候才…

探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)

目录 [TOC](目录)一、C的基础知识1. 数据类型与变量2. 条件与循环3. 函数与模块 二、C的实用技能1. 面向对象编程(OOP)2. 标准模板库(STL)3. 异常处理 三、C的重要性与应用场景结语 欢迎阅读本篇博客,我们将深入探讨C语…

【WIN环境构建】开发环境构建过程

【WIN环境构建】开发环境构建过程 安装git git官网 连接到gitee 使用Git Bash #设置全局的用户名和邮箱 git config --global user.name "xxx" git config --global user.email "xxx163.com"#生成SSH公钥 ssh-keygen -t rsa -C "xxx163.com"#查…

Uniapp 和Vue3 小程序 获取页面dom 方法

最近在写公司的小程序项目 技术框架 主要是Uniapp 和 Vue3 恰好有个需求是要 获取小程序页面dom 结构 用常见的vue3获取dom 结构不起效 记录一下 先给出正确答案 <template><view><view><view>Html</view><view id"target">…

Xmind拿来主义快速高效,Xmind思维导图模板合集

一、素材描述 本套Xmind模板&#xff0c;大小153.57M&#xff0c;共有310个文件。 二、素材目录 01-学习模版&#xff08;46套模板&#xff09; 02-知识结构&#xff08;88套模板&#xff09; 03-生活计划&#xff08;26套模板&#xff09; 04-商务模版&#xff08;44套模…

就业班 2401--3.8 Linux Day14--阿帕奇+LNMP(编译安装)

一、WEB服务器 ^世上最重要的事&#xff0c;不在于我们在何处&#xff0c;而在于我们朝着什么方向走。^ 1、WEB服务简介 # 目前最主流的三个Web服务器是Apache、Nginx、 IIS。 - WEB服务器一般指网站服务器&#xff0c;可以向浏览器等Web客户端提供网站的访问&#xff0c;让全…

20-Java备忘录模式 ( Memento Pattern )

Java备忘录模式 摘要实现范例 备忘录模式&#xff08;Memento Pattern&#xff09;保存一个对象的某个状态&#xff0c;以便在适当的时候恢复对象 备忘录模式属于行为型模式 摘要 1. 意图 在不破坏封装性的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对…

FFmpeg--FlvPaser源码:解析.flv输出.h264

文章目录 程序功能&#xff1a;函数调用流程&#xff1a;部分FlvParse.h部分FlvParse.cpp 程序功能&#xff1a; 解析flv文件&#xff0c;重写一个h264文件&#xff0c;如输入movie.flv , 输出movie.h264 (只有视频&#xff0c;没有声音) 函数调用流程&#xff1a; 1 Proce…

JVM 的垃圾回收机制以及垃圾回收算法的详解

目录 1、JVM 的垃圾回收机制 2、识别垃圾 2.1、引用计数 2.2、可达性分析 3、垃圾回收算法 3.1、标记-清除 3.2、复制算法 3.3、标记-整理 4、分代回收 1、JVM 的垃圾回收机制 对于&#xfeff;程序计数器&#xfeff;、&#xfeff;虚拟机栈&#xfeff;、&#xfe…

【HarmonyOS Arkts笔记】http网络请求封装

common.ts export default class CommonConstant {/*** The host address of the server.*/static readonly SERVER: string 请求接口地址;/*** The request success code.*/static readonly SUCCESS_CODE: number 200;/*** Read timeout.*/static readonly READ_TIMEOUT: n…

C 嵌套 switch 语句

您可以把一个 switch 作为一个外部 switch 的语句序列的一部分&#xff0c;即可以在一个 switch 语句内使用另一个 switch 语句。即使内部和外部 switch 的 case 常量包含共同的值&#xff0c;也没有矛盾。 语法 C 语言中 嵌套 switch 语句的语法&#xff1a; switch(ch1) {…

CSS顶部与JS后写:网页渲染的奥秘

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【Qt】不透明指针(Opaque Pointer)在Qt源码中的应用

目录 什么是不透明指针&#xff08;Opaque Pointer&#xff09;不透明指针在Qt代码中的应用Qt中与不透明指针相关的一些宏 什么是不透明指针&#xff08;Opaque Pointer&#xff09; GeeksforGeeks中给的定义如下&#xff1a; An opaque pointer is a pointer that points to …

golang 注释插件

Goanno插件 自动生成golang注释,该插件为 Intellij/Goland 中的 golang 提供自动生成注释 如何使用&#xff1f; control command / (for windows: control alt /)&#xff08;生成注释&#xff09;Right click -> Generate -> Goanno&#xff08;生成注释&#x…

No dashboards are active for the current data set(Tensorboard)

这种情况有两种可能&#xff1a;一是路径不对。二是浏览器不对。 首先说明的是&#xff0c;我说的是通过命令tensorboard --logdir 路径打开tensorboard时&#xff0c;出现上述问题。如果是通过vscode或pycharm自带的tensorboard插件打开出现上述问题&#xff0c;那我也没有办…