C/C++中的字符串

字符串的末尾会有会有\0用于标志着字符串的结束,因此在字符数组的初始化和复制的时候需要防止字符串的越界。如"123456789"中有9个数字如果要存储到字符数组中至少需要10个字节的空间。
代码分析:

#include <iostream>
using namespace std;
int main(){
    char str1[] = "hello alibaba";
    char str2[] = "hello alibaba";
    char* str3 = "hello alibaba";
    char* str4 = "hello alibaba";

    if(str1 == str2)
        cout<< "str2 and str1 are in the same ";
    else 
        cout<<"str1 and str2 are not in the same";
    
    if(str3 == str4)
        cout<< "str3 and str4 are in the same ";
    else 
        cout<<"str3 and str4 are not in the same";
    return 0;
}

对于字符串数组,c/c++会分配两个长度为14字节的空间,并将hello alibaba分别拷贝进去,两个数组的初始地址不同,因此会得到不同的提示。

编译器的警告

而str3和str4是两个指针,系统不会为他们分配内存,只需要让他们指向hello alibaba的内存地址即可,常量字符串在内存中只有一份拷贝,两个指针指向的内容是一致的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容