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

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号