IR-*_*x86 0 c++ arrays string sizeof c++11
string a= "Stack Overflow";
char b[]= "Stack Overflow";
cout<<sizeof(a)<<","<<sizeof(b)<<endl;
Run Code Online (Sandbox Code Playgroud)
上面代码的输出是4,15
因为'a'指向字符串,所以它的大小是我机器上字符串的大小.
由于'a'指向字符串,因此它的大小为我机器上字符串的大小.
不完全是.
a 是一个字符串.它不是指针,因此不指向字符串.string您的设置的实现sizeof(string)是4.
'b'也是指向字符串的指针,但为什么它的大小为15(即sizeof("Stack Overflow"))?
不对.
b不是指向字符串的指针.这是一个数组char.这条线
char b[]= "Stack Overflow";
Run Code Online (Sandbox Code Playgroud)
相当于:
char b[15]= "Stack Overflow";
Run Code Online (Sandbox Code Playgroud)
编译器推断出数组的大小并创建一个正确大小的数组.