string和char的有关问题.

string和char的问题...
string str("123");
char a[] = {"123"};
cout << sizeof(str.c_str()) << '\n'
  << sizeof(a) << endl;


输出:
4
3

c_str()返回的不是C风格字符串首地址么?
a表示的不也是C风格字符串首地址么?
怎么算出来的长度不一样???

string对象能解决这问题不???

大侠快显灵!!!

------解决方案--------------------
第一,返回的是首地址,所以结果是4
第二,你有试过cout<<a,或者printf么? 输出的是字符串,而不是a地址。sizeof也是求的字符串长度,你用size((unsigned *)a)就是4了,这是C里面弄好了的,对于char型指针的运算方式。还有,我表示楼主char a[]={"123"};这么sizeof真的是3么。。我怎么是4呢。。,应该加个\0的啊,我如果改成1234就是输出5了。