疑问...
时间:2011-12-06
来源:互联网
const char* ca[] = {
"pralines & cream",
"fudge ripple",
"wild mountain blackberry"
};
cout << sizeof(ca) << endl;
cout << sizeof(*ca) << endl;
这个很好理解,ca是一个存储指针的数据,而*ca是一个指针,所以 sizeof(*ca) = 4, sizeof(ca) = 12.
但是:
const string iceCream[] = {
"pralines & cream",
"fudge ripple",
"wild mountain blackberry"
};
cout << sizeof(iceCream) << endl;
cout << sizeof(*iceCream) << endl;
iceCream是一个存储string的数组,string的构造器直接将C-style转化为string对象。*iceCream不是string对象么,那么为什么sizeof(*iceCream) = 4, sizeof(iceCream)=12 ????
PS:
sizeof不是在编译期间就计算出来的么?那么编译期间就知道结构体/类的内存如何对齐的吗????
"pralines & cream",
"fudge ripple",
"wild mountain blackberry"
};
cout << sizeof(ca) << endl;
cout << sizeof(*ca) << endl;
这个很好理解,ca是一个存储指针的数据,而*ca是一个指针,所以 sizeof(*ca) = 4, sizeof(ca) = 12.
但是:
const string iceCream[] = {
"pralines & cream",
"fudge ripple",
"wild mountain blackberry"
};
cout << sizeof(iceCream) << endl;
cout << sizeof(*iceCream) << endl;
iceCream是一个存储string的数组,string的构造器直接将C-style转化为string对象。*iceCream不是string对象么,那么为什么sizeof(*iceCream) = 4, sizeof(iceCream)=12 ????
PS:
sizeof不是在编译期间就计算出来的么?那么编译期间就知道结构体/类的内存如何对齐的吗????
作者: halonar 发布时间: 2011-12-06
cout << &iceCream[0] << endl;
cout << &iceCream[1] << endl;
cout << &iceCream[2] << endl;
我打印了地址,的确输出是:
0x22f2f4
0x22f2f8
0x22f2fc
说明果然:iceCream[0]只是占了4个字节,但是我想知道iceCream[0]不是string对象,它存在哪了?
cout << &iceCream[1] << endl;
cout << &iceCream[2] << endl;
我打印了地址,的确输出是:
0x22f2f4
0x22f2f8
0x22f2fc
说明果然:iceCream[0]只是占了4个字节,但是我想知道iceCream[0]不是string对象,它存在哪了?
作者: halonar 发布时间: 2011-12-06
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28