一个关于sizeof的有趣的小问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cup160828/article/details/82121160

    闲来无事,想看看存储同样字符的字符串跟字符数组的长度的区别(因为字符串末端填充了'\0',所以我一开始认为一个字符串的实际占内存的大小应比存储相同字符的字符数组大1个sizeof(char))。

    那就编程试试吧。

    首先定义字符串str='abcd',字符数组a[4]={'a','b','c','d'}:

    char a[4]={'a','b','c','d'};
    string str="abcd";

    然后添加如下代码:
    cout<<sizeof(char)<<endl;
    cout<<sizeof(a)<<endl;

    运行,输出1 4,没毛病。

    继续,添加以下代码并运行:

    cout<<sizeof(str[0])<<endl;

    输出1,同样没问题

    然而,cout<<sizeof(str)<<endl;的结果为32;查阅资料发现,string是一个类,所占字节为32,若想要得知一个字符串的长度,应用其自带的length方法,测试一下cout<<str.length()<<endl;输出4,果然如此。

扫描二维码关注公众号,回复: 2982669 查看本文章

附sizeof含义:sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。

    

猜你喜欢

转载自blog.csdn.net/cup160828/article/details/82121160