C++学习笔记2023-05-03

区别string对象(字符串对象)和字符串常量

一、字符串对象

在C++中,字符串常量是指程序中固定不变的字符串值,例如:"hello world"。字符串常量存储在只读的静态存储区域,通常称为常量区或静态存储区,编译器会在程序编译时为其分配内存空间。由于字符串常量的值是固定的,因此它们不能被修改。

字符串对象是C++标准库中提供的一个类,用于表示可变的字符串值。我们可以使用string类来创建和操作字符串对象,例如:

#include <string>
using namespace std;

int main() {
    string str1 = "hello";
    string str2 = "world";
    string str3 = str1 + " " + str2;
    cout << str3 << endl; // 输出 "hello world"
    return 0;
}

这里的string是一个类。

在这个例子中,我们使用了string类来创建字符串对象str1、str2和str3,并对它们进行了一些操作,例如拼接字符串。与字符串常量不同,字符串对象中的值是可以修改的。

需要注意的是,虽然字符串常量和字符串对象都表示字符串值,但它们在内存中的存储方式不同。字符串常量存储在只读的静态存储区域,而字符串对象通常是在堆栈或堆上分配内存来存储。这也是为什么字符串常量的值是不可修改的,而字符串对象的值是可变的。

二、字符串常量

const char* str = "Hello";
*str = 'h';    // 编译器报错

这个代码片段会导致编译器报错,因为str指针指向的是字符串常量的首地址,而字符串常量是只读数据,不允许被修改。因此,由于const char*声明的指针是指向常量的指针,它所指向的字符数组是不可修改的。

字符串常量"Hello"被存储在常量区,常量区的内存只有读取权限,没有写入权限,因袭他们的值在程序运行期间不能改变。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 初识C++ C++标准格式 变量 作用:给一段指定的内存空间起名,方便操作这段内存。语法:数据类型 变量名 = ...
    home2_d685阅读 242评论 0 0
  • ^函数重载的匹配: 当函数名被重载后,函数的匹配过程:首先寻找能精确匹配的函数,如果未能精确匹配,则尝试...
    鲁大帅阅读 1,056评论 0 1
  • C++学习笔记 day2 教学课程链接:bilibili 黑马程序员:C++从0到1入门编程[https://ww...
    AmberCheung阅读 211评论 0 0
  • 前言 个人觉得学习编程最有效的方法是阅读专业的书籍,通过阅读专业书籍可以构建更加系统化的知识体系。 一直以来都很想...
    好先生FX阅读 140评论 0 0
  • Java从入门到精通学习笔记 第一章初识java a)Java是一种通过解释方式来执行的语言。 b)Java语言编...
    张中华阅读 1,514评论 3 23