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

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

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

以上代码的输出是 4,15
因为“a”指向字符串,所以它的大小是我机器上字符串的 4。

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

最佳答案

Since 'a' points to the string, it has size 4 that of a string on my machine.

不完全是。

a 是一个 字符串。它不是指针,因此不指向字符串。 string 在您的设置中的实现使得 sizeof(string) 为 4。

'b' is also pointer to string, but why it has size of 15 (i.e. of sizeof("Stack Overflow")) ?

不正确。

b 不是指向字符串的指针。它是一个 char 数组。线路

char b[]= "Stack Overflow";

相当于:

char b[15]= "Stack Overflow";

编译器推导出数组的大小并创建一个正确大小的数组。

关于c++ - C++中指向数组与字符串的指针的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47819708/

相关文章:

c++ - 使用 JIT 设计虚拟机

JavaScript - 循环数组比我应该的少

Java二维字符数组

c++ - 在不膨胀命名空间的情况下在 C++ 中声明枚举的好方法

c++ - 为什么允许在派生类中调用 protected 静态方法?

c++ - 在 C++/G++ 中是否有*任何*方法来获取 C 样式数组的长度?

C# 字典找不到字符串键

ios - Swift 中的字符串解释

c++ - 基于对象中属性的最小对象堆

c - 如何将数组的元素数量传递给函数