算法训练—(二)string、char[]"/>
c++算法训练—(二)string、char[]
2、string、char[]
2.1、string
因为字符串常数几乎可以是任意长度,所以程序必须有一些方法知道它有多长。在C++ 中,这是通过在其末尾附加一个额外的字节并将数字 0 存储在其中来完成的。这被称为 null 终止符或 null 字符,它标记着字符串的结尾。
不要将空终止符与字符 ‘0’ 混淆。字符 ‘0’ 的 ASCII 码是 48,而空终止符的 ASCII 码是 0。如果要在屏幕上打印字符 0,则显示的其实是 ASCII 码为 48 的字符;在使用字符串常数或给字符串变量赋值时,ASCII 代码为 0 的字符将自动附加在其末尾。
可以发现字符串中的字符存储在连续的内存位置。其次,可以看到引号不与字符串一起存储,它们只是在源代码中标记字符串的开头和结尾。最后,请注意字符串的最后一个字节,它包含 null 终止符,由 \0 字符表示。最后一个字节意味着虽然字符串 “Sebastian” 的长度为 9 个字符,但它实际占用了 10 个字节的内存。
sizeof(…)是运算符,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。
c/c++ strlen(str)和str.length()和str.size()都可以求字符串长度。
其中str.length()和str.size()是用于求string类对象的成员函数。(两者无区别)
strlen(str)是用于求字符数组的长度,其参数是char*。
更多推荐
c++算法训练—(二)string、char[]
发布评论