C ++中数组与字符串指针的大小

时间:2017-12-14 18:13:55

标签: c++ arrays string c++11 sizeof

string a= "Stack Overflow";
char b[]= "Stack Overflow";
cout<<sizeof(a)<<","<<sizeof(b)<<endl;

上述代码的输出为4,15
因为&#39; a&#39;指向字符串,它的大小为4我机器上的字符串。

&#39; B&#39;也是指向字符串的指针,但为什么它的大小为15(即sizeof(&#34; Stack Overflow&#34;))?

1 个答案:

答案 0 :(得分:6)

  

由于'a'指向字符串,因此它的大小为我机器上字符串的大小。

不完全是。

a 是一个字符串。它不是指针,因此不指向字符串。在您的设置上string的实施方式是sizeof(string)为4。

  

'b'也是指向字符串的指针,但为什么它的大小为15(即sizeof(“Stack Overflow”))?

不正确。

b不是指向字符串的指针。它是char的数组。这条线

char b[]= "Stack Overflow";

相当于:

char b[15]= "Stack Overflow";

编译器推断出数组的大小并创建一个大小合适的数组。