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";

它们最根本的区别是在内存中的存储区域不一样,字符数组存储在全局数据区或栈区,第二种形式的字符串存储在常量区。全局数据区和栈区的字符串(也包括其他数据)有读取和写入的权限,而常量区的字符串(也包括其他数据)只有读取权限,没有写入权限。

posted @   小熊酱  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示