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

size of pointer to array vs string in C++

本文关键字:指针 字符串 数组      更新时间:2023-10-16
string a= "Stack Overflow";
char b[]= "Stack Overflow";
cout<<sizeof(a)<<","<<sizeof(b)<<endl;

以上代码的输出为4,15
由于" A"指向字符串,因此它具有我的机器上字符串的尺寸4。

'b'也是指向字符串的指针,但是为什么它的大小为15(即sizeof(" stack溢出"))?

自" A"指向字符串,它具有我的机器上字符串的尺寸4。

不是完全。

a 字符串。这不是指针,因此,没有指向字符串。在您的设置上的string实现是使sizeof(string)为4。

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

不正确。

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

char b[]= "Stack Overflow";

等效于:

char b[15]= "Stack Overflow";

编译器推论数组的大小并创建正确大小的数组。