C++ 字符串
1. C风格字符串
在C语言中,字符串表示为字符的数组。字符串中的最后一个字符是空字符(\0’)。
C 和 C++中的 sizeof 操作符可用于获得给定数据类型或变量的大小。例如,sizeof(char)
返回 1,因为 char 的大小是 1 字节。但是,在 C 风格的字符串中,sizeof()
和 strlen()
是不同的。绝对不要通过 sizeof()
获得字符串的大小。
如果 C 风格的字符串存储为 char[],则 sizeof() 返回字符串使用的实际内存,包括‘\0’字符。例如:
char text[]= "abcdef";
size_t s1= sizeof(text); // is 7
size_t s2 = strlen(text); // is 6
但是,如果C风格的字符串存储为 char*,sizeof()
就返回指针的大小!例如:
const char* text2 = "abcdef"; // 加const
size_t s3 = sizeof(text2); // is platform-dependent
size_t s4 = strlen(text2); // is 6
2. 字符串和字符串数组
char a[5] = {'1','2','3','4','5'}; //这是一个字符数组
char b[5] = {'1','2','3','4','\0'}; //这是一个字符串
3. 字符串的初始化
用引号括起的字符串隐式包含了结尾的空字符,不需要人为添加,但应记得为其预留位置。在这样输入字符串的时候,我们可以手动设置字符数组长度,也可以让编译器自动计算空间,比如:
char dog[6] = "Teddy" //人为设置,预留一个空字符的位置
char cat[] = "Persion" //编译器计算
4. C语言字符串的两种表示方法
char s1[] = "asdfghj";
char *s1 = "asdfghj";
它们最根本的区别是在内存中的存储区域不一样,字符数组存储在全局数据区或栈区,第二种形式的字符串存储在常量区。全局数据区和栈区的字符串(也包括其他数据)有读取和写入的权限,而常量区的字符串(也包括其他数据)只有读取权限,没有写入权限。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」