注册 登录
编程论坛 C++教室

关于字符串数组的问题

简体字01 发布于 2012-03-29 22:16, 369 次点击
刚学字符串数组,下面的程序求解,为什么输出结果是16和48,那个sizeof是有什么用的,还有一个疑问就是字符串变量比较大小是怎么比较的,以什么为依据排列的。#include<iostream>
using namespace std;
#include<string>
int main()
{
    string s[3]={"Tan","Zhao","Li"};
    cout<<sizeof(string)<<"  "<<sizeof(s)<<endl;
    return 0;
}

请各位帮忙解答下,谢谢。
4 回复
#2
yuccn2012-03-30 11:11
sizeof(string) 这个和他的类里面的成员 有关了,至于为什么为16,你的看string是怎么封装的,
sizeof(s)就是因为你定义了三个string对象 每个大小为16  所以 sizeof(s)就是 3 * 16 = 48了

注意的是 s为数组的时候 sizeof求得的是总大小而不是指针大小
#3
简体字012012-03-30 21:22
回复 2楼 yuccn
谢谢解答,但还是有些不懂。
“至于为什么为16,你得看string是怎么封装的” 这是什么意思??
#4
yuccn2012-03-31 21:57
就是说 研究sizeof(string)没有意义,它的大小得看它是怎么封装的,也就是说看他源代码意义还大一点
#5
简体字012012-04-01 11:59
回复 4楼 yuccn
恩恩,谢谢。
1