1) C、C++中字符串的存储方式有何不同?
在C中,字符串通常以字符数组存储,并以'\0'作为结束标志
在C++中,可以使用string类来处理字符串,它提供了更丰富的功能和安全性
C 语言中字符串存储方式
在 C 语言中,字符串本质上是一个字符数组。例如char str[] = "Hello",编译器会将字
符'H','e','l','l','o'依次存放在连续的内存单元中,并且在字符串的末尾自动添加'\0'(ASCII 码
值为 0 的字符)作为结束标志。这个结束标志对于许多字符串处理函数(如strcpy(复制)、
strcat(连接)、strcmp(比较)等)是非常重要的,因为这些函数通过检测'\0'来确定字符串的结束位
置。
但是,这种存储方式也有一些缺点。由于 C 语言中的字符串没有自带的长度信息,完全依赖'\0'来
判断结束,如果在处理字符串时不小心修改了'\0',或者字符串没有正确地以'\0'结尾,就可能导致
字符串处理函数出现错误,如缓冲区溢出等安全问题。
C中提供的的字符串处理函数:这些函数都位于中,主要依赖字符串的\0终止符来判断字符串的结束
1.strlen():获取字符串的长度,不包括\0 函数原型:size_t strlen(const char * str)
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "Hello";
size_t len = strlen(str);
printf("The length of the string is: %d\n", len);//5 不包括\0
return 0;
}
2.strcpy():复制字符串 将源字符串(包括结束符'\0')复制到目标字符串中,覆盖目标字符串原来的内容。 函数原型:char *strcpy(char * destination, const char * so