c++ sizeof

来源:百度知道 编辑:UC知道 时间:2024/06/20 12:09:39
struct i
{int a;
std::string b;
}x,y;
main()
{
x.a=1;
x.b="123456abc";
y.a=2;
y.b="123456abcd";
int q,w,e;
q=sizeof(x);
w=sizeof(y);
为什么两个结构的宽度都是20?不管b的值怎么改,还都是20,为什么啊?

sizeof不是字符串占的空间也不是字符数组占的空间,而是一个字符型指针占的空间。strlen求的是实际长度
所以一个int 四个字节 一个string十六个字节 一共二十字节。用strlen试试 就不会是这种结果了。

看不明白

VC6.0中是这样的
int 占四个字节
string是16个字节
所以加起来是20个字节

string类本身并不存储字符串内容,它应该只保留了字符串的指针

在c++里, sizeof永远是编译时就决定了, 跟结构里面存的内容毫无关系