C && C++ 易混淆问题
bug太多了,哭了啊,今天又修了一天,可算把搜索功能整好了,后续打算开发一个评论功能,看有没有精力吧zzz
字符串
在C++中,char str = "afefa";
是一个不合法的语法。如果你想声明一个字符串,正确的方式是使用字符数组(C风格字符串)或者C++的std::string
类。下面是两种合法的方式:
- 使用字符数组(C风格字符串):
1 | char str[] = "afefa"; |
在这种情况下,编译器会在内存中分配足够的空间来存储字符串及其结尾的空字符(’\0’)。str
数组的大小将是字符串长度加上一个额外的字节来存储空字符。在这个例子中,str
的大小将是 6 字节(5 个字符 + 1 个空字符)。
内存结构示意图(每个方框代表一个字节):
1 | +---+---+---+---+---+---+ |
值得注意的是,这种写法目前已经被GCCban了,会报warning,我个人建议写成const char str[] = “…”,这样更符合常量字符串的定义。
- 使用
std::string
类:
1 |
|
使用std::string
类时,字符串的长度和内存管理由std::string
类自动处理,你无需担心内存结构。std::string
类会在需要时动态分配内存以容纳字符串。