6.130 字符串指针和字符数组的区别

2023-11-13

字符串指针:

        1)字符串指针变量存储在栈区,其指向的字符串存储在常量区。

        2)字符串指针变量存储的字符串首字符的地址,并非整个字符串

        3)不能对指向的字符串做任何修改,char * 本质为 char const *

        4)字符串指针变量可以做 ++ 操作

字符数组:

        1)字符数组直接在栈区开辟空间(和编译器有关,有的编译器把字符串存在常量区,然后拷贝到栈上的数组中;有的直接用指令初始化栈上的字符数组)

        2)字符数组保存在栈区,故可以对任意字符进行修改

        3)字符数组的数组名不能做 ++ 操作,其本质是一个符号常量

int main() {

  // 字符串指针变量
  const char* str1 = "hello world";
  cout << sizeof(str1) << endl;

  cout << *str1 << endl;
  cout << *(str1 + 1) << endl;
  // *str1 = 'H';	  // 错误的,文字常量区只读
  // str1++; str1 = str1 + 1;
  
  // 字符串(字符数组)
  char str2[] = "hello world";
  cout << str2 << endl;
  cout << sizeof(str2) << endl;
  *str2 = 'H';
  cout << str2 << endl;
  // str2++;
  /*char* p = str2;
  p++;*/


  // 区别
  // 字符串指针变量
  // str1 变量,在栈区开辟空间,"hello world"在文字常量区开辟空间
  // str1 仅仅保存"hello world"首元素的地址,不是字符串常量本身。
  // str1 不能对"hello world 内容进行修改(写的操作)"
  // str1 本质是变量,可以++

  // 字符串(字符数组)
  // str2根据初始化字符串的大小开辟空间,并且直接存储该字符串的内容
  // 可以通过str2对"helloworld"进行写操作。
  // str2是数组名,是一个符号常量,不能++

  return 0;
}

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

6.130 字符串指针和字符数组的区别 的相关文章

  • C# 打印问题(RichTextBox)

    我想打印我的 RichTextBox eintragRichTextBox 的内容 我现在有这个代码 private void druckenPictureBox Click object sender EventArgs e PrintD
  • 为什么 F# 的默认集合是排序的,而 C# 的不是?

    当从 C 世界迁移到 F 最惯用的可能 思维方式时 我发现了这个有趣的差异 在 C 的 OOP mutable 世界中 默认的集合集合似乎是HashSet https learn microsoft com en us dotnet api
  • 在路由mvc 4中添加公司名称

    我一直在尝试为 Facebook 等用户提供在 URL 中添加公司名称的选项 http localhost 50753 MyCompany Login 我尝试过不同的网址 但没有成功 routes MapRoute name Default
  • 删除是如何工作的? [复制]

    这个问题在这里已经有答案了 可能的重复 C 编程 free 如何知道要释放多少 https stackoverflow com questions 1518711 c programming how does free know how m
  • 检测wlan是否关闭

    任何人都可以给我一个提示 如何在 Windows Phone 上以编程方式检测 C 8 1 应用程序 不是 8 0 是否启用 禁用 WLAN 我不想更改这些设置 只是需要知道 该解决方案是一个 Windows 8 1 通用应用程序 Wind
  • 解析 JWT 令牌以仅获取有效负载内容,无需 C# 或 Blazor 中的外部库

    我正在使用 Blazor 编写可以访问 JWT 的客户端应用程序 我想知道一种简单的方法来读取令牌有效负载内容而不添加额外的依赖项 因为我不需要其他信息 也不需要验证令牌 我认为解析有效负载内容应该足够简单 只需将其写入方法即可 JwtTo
  • 在 C# 中调用 C++ 库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有很多用 C 编写的库 我想从 C 调用这些库 但是 我遇到了很多问题 我想知道是否有书籍或指南告诉我如何做到这一点 Dll导入 htt
  • 是否存在指向不同类型的指针具有不同大小的平台?

    C 标准允许指向不同类型的指针具有不同的大小 例如sizeof char sizeof int 是允许的 但是 它确实要求如果将指针转换为void 然后转换回其原始类型 它必须与其原始值进行比较 因此 从逻辑上来说 sizeof void
  • Gwan C#,如何获取HTTP标头?

    我需要它来重写 url 以了解我正在处理哪个友好的 url 用于用户代理和其他东西 EDIT public class Gwan MethodImplAttribute MethodImplOptions InternalCall exte
  • 为什么'enable_if'不能用于禁用这里声明

    include
  • 一元 +/- 运算符如何可能导致“-a”或“+a”中的整数提升,“a”是算术数据类型常量/变量?

    这句看似微不足道的台词摘自我的迈克 巴纳汉和布雷迪的 C 书 第 2 8 8 2 节 http publications gbdirect co uk c book chapter2 expressions and arithmetic h
  • 访问 ascx 文件中的母版页控件

    我有一个母版页文件 其中包含 2 个面板控件中的 2 个菜单 我还使用控件来检查用户是否登录并获取用户类型 根据我想要显示 隐藏面板的类型 控件本身不在母版页中引用 而是通过 CMS 系统动态引用 我想在用户控件中使用findcontrol
  • 根据对象变量搜索对象列表

    我有一个对象列表 这些对象具有三个变量 ID 名称和值 这个列表中可能有很多对象 我需要根据ID或Name找到一个对象 并更改值 例子 class objec public string Name public int UID public
  • UI 函数在快速事件完成之前触发

    我有一个停靠在 Silverlight 应用程序中的 Web 浏览器框架 有时会在其上弹出全窗口 XAML Silverlight UI 元素 我已经或多或少修复了一个老问题 即 Web 框架的内容似乎与 Silverlight 内容不能很
  • 英文日期差异

    接近重复 如何计算相对时间 https stackoverflow com questions 11 how do i calculate relative time 如何在 C 中计算某人的年龄 https stackoverflow c
  • CUDA 8 编译错误 -std=gnu++11

    我正在尝试转换一些代码以使用 CUDA 并且我认为我遇到了兼容性问题 我们使用CMake 这些是我使用的 gcc 和 CUDA 版本 gcc version gcc Ubuntu 5 4 0 6ubuntu1 16 04 5 5 4 0 2
  • C++ 中 void(*)() 和 void(&)() 之间的区别[重复]

    这个问题在这里已经有答案了 在此示例代码中 func1是类型void int double and funky是类型void int double include
  • 需要提取字符串中点后的最后一个数字,如“7.8.9.1.5.1.100”

    我需要提取 C 字符串中最后一个点后面的最后一个数字 例如 7 8 9 1 5 1 100 并将其存储在整数中 Added 该字符串也可以是 7 8 9 1 5 1 1 或 7 8 9 1 5 1 0 我还想验证它在最后一个点之前恰好是 7
  • 来自 3rd 方库的链接器错误 LNK2019

    我正在将旧的 vc 6 0 应用程序移植到 vs2005 我收到以下链接器错误 我花了几天时间试图找到解决方案 错误LNK2019 无法解析的外部符号 imp 创建AwnService 52 在函数 public int thiscall
  • 如何将 SQL“LIKE”与 LINQ to Entities 结合使用?

    我有一个文本框 允许用户指定搜索字符串 包括通配符 例如 Joh Johnson mit ack on 在使用 LINQ to Entities 之前 我有一个存储过程 该存储过程将该字符串作为参数并执行以下操作 SELECT FROM T

随机推荐

  • MySQL之分表分库分区

    数据库分表可以解决单表海量数据的查询性能问题 分库可以解决单台数据库的并发访问压力问题 分表 分表分为水平分表和垂直分表 水平分表原理 分表策略通常是用户ID取模 如果不是整数 可以首先将其进行hash获取到整 水平分表遇到的问题 1 跨表
  • Hadoop序列化案例

    Hadoop序列化案例 统计每一个手机号耗费的总上行流量 总下行流量 总流量 数据 1 13736230513 192 196 100 1 www baidu com 2481 24681 200 2 13846544121 192 196
  • Kafka3.0.0版本——Leader Partition自动平衡

    目录 一 Leader Partition自动平衡的概述 二 Leader Partition自动平衡的相关配置参数 三 Leader Partition自动平衡的示例 一 Leader Partition自动平衡的概述 正常情况下 Kaf
  • 代码审计练习题

    代码审计练习题 源码 方法 简单记录一下姿势 源码 判断var1和var2是否为对象 用弱不等号判断 分别判断md5
  • 将CSDN文章导出为.md、HTML、pdf格式

    将CSDN文章导出为 md HTML pdf格式 一 将CSDN文章导出为 md文件 二 将CSDN文章导出为HTML文件 三 把 md文件转换为pdf格式 一 将CSDN文章导出为 md文件 1 打开一篇CSDN文章 点击上方的 导出 按
  • 后端(五):JVM

    目录 JVM 中的内存区域划分 JVM 的类加载机制 1 加载 2 验证 3 准备 4 解析 5 初始化 JVM 中的垃圾回收策略 找 确认垃圾 1 引用计数 2 可达行分析 释放 垃圾 对象 1 标记清除 2 复制算法 3 标记整理 分代
  • Ubuntu18.04搭建VSCode编译环境

    确认ubuntu 18 04 uname a 添加root帐户密码 sudo passwd root 第一步 配置C 编译环境 安装gcc 和 g gcc v g v sudo apt install gcc sudo apt instal
  • 【maven】maven settings.xml 中 mirror 和 repository 的区别

    一 概述 maven的settings xml文件里面有proxy server repository mirror的配置 在配置仓库地址的时候容易混淆 proxy是服务器不能直接访问外网时需要设置的代理服务 不常用 server是服务器要
  • [论文阅读] (13)英文论文模型设计(Model Design)如何撰写及精句摘抄——以入侵检测系统(IDS)为例

    娜璋带你读论文 系列主要是督促自己阅读优秀论文及听取学术讲座 并分享给大家 希望您喜欢 由于作者的英文水平和学术能力不高 需要不断提升 所以还请大家批评指正 非常欢迎大家给我留言评论 学术路上期待与您前行 加油 前一篇从个人角度介绍英文论文
  • 一个对前端程序员比较友好的mock数据工具网址

    由前大搜车公司出品的mock网站 如下 https www easy mock com login 妈妈再也不用担心我从网上找不到假数据了 更多 如何写一个自己的小程序并上线 Github搭建个人博客 2019最新版 亲测 qq加油小程序
  • FreeRTOS操作系统的学习(一)

    操作系统的定义 管理和控制计算机硬件与软件资源的计算机程序 直接运行在 裸机 上的最基本的系统软件 任何其他软件都必须在操作系统的支持下才能运行 其介于APP和硬件之间 2 为什么要使用操作系统 1 与裸机相比 大大提高了CPU的灵活性 2
  • SpringBoot如何将项目打成jar包,并运行jar包呢?

    转自 SpringBoot如何将项目打成jar包 并运行jar包呢 下文笔者讲述springboot将项目打成jar包的方法分享及运行jar包的方法分享 如下所示 实现思路 1 pom中进行相应的build配置 2 运行maven inst
  • 位运算说明

    文章目录 参考文档 表格 来自百度百科 按位与运算符 按位或运算符 异或运算符 取反运算符 左移运算符 lt lt 右移运算符 gt gt 无符号右移运算符 gt gt gt 复合赋值运算符 不同长度的数据进行位运算 参考文档 百度百科 h
  • Windows记事本编码反汇编分析

    转载自 liam page 网上有一个流传多年的段子 这个段子大致是说 若你在简体中文版本的 Windows 系统下 用系统自带的记事本程序 以默认的 ANSI 编码保存 联通 两个字 那么重新打开后 联通 二字就消失了 如果我没记错的话
  • 【JDBC】idea添加mysql-jar包(很轻松)

    添加jar包 官网下载jar包 idea导入jar包 检查 官网下载jar包 官网地址 MySQL Download Connector J 下载完之后解压 打开文件夹 直到见到我们需要的jar包 idea导入jar包 我们复制刚才下载好的
  • 【ERROR】AssertionError: The NVIDIA driver on your system is too old (found version). Please upd

    错误信息 AssertionError The NVIDIA driver on your system is too old found version 10000 Please update your GPU driver by dow
  • spark boot封装,多线程高效执行

    1 简介 众所周知 spark是一个分布式计算引擎 可以将计算数据分不到不同的节点进行计算 但是往往我们的业务都是比较复杂 每天定时跑的时候不只是一个job 可能是有很多的job 但是引擎本身是串行化的 而且对于经验不深的同学 一个业务可能
  • redis中关闭rdb跟aof

    当往redis中导入数据时 有时会出现redis server went away的情况 出现这一问题的原因有 导入的数据量太大 而内存不够 即内存1G 但数据有2G 此时的redis服务需要重启 可能是同一时间导入的数据太多 导致数据持久
  • CSS实现半透明边框

    CSS3实现半透明边框 一 往期文章 二 CSS hsla 函数 四 代码 三 效果图 一 往期文章 CSS3回炉计划 编码技巧 如何实现半透明边框 边框中显示背景 二 CSS hsla 函数 hsla 函数使用色相 饱和度 亮度 透明度来
  • 6.130 字符串指针和字符数组的区别

    字符串指针 1 字符串指针变量存储在栈区 其指向的字符串存储在常量区 2 字符串指针变量存储的字符串首字符的地址 并非整个字符串 3 不能对指向的字符串做任何修改 char 本质为 char const 4 字符串指针变量可以做 操作 字符