string a= "Stack Overflow";
char b[]= "Stack Overflow";
cout<<sizeof(a)<<","<<sizeof(b)<<endl;
上述代码的输出为4,15
因为&#39; a&#39;指向字符串,它的大小为4我机器上的字符串。
答案 0 :(得分:6)
由于'a'指向字符串,因此它的大小为我机器上字符串的大小。
不完全是。
a
是一个字符串。它不是指针,因此不指向字符串。在您的设置上string
的实施方式是sizeof(string)
为4。
'b'也是指向字符串的指针,但为什么它的大小为15(即sizeof(“Stack Overflow”))?
不正确。
b
不是指向字符串的指针。它是char
的数组。这条线
char b[]= "Stack Overflow";
相当于:
char b[15]= "Stack Overflow";
编译器推断出数组的大小并创建一个大小合适的数组。