这个程序
#include <iostream>
int main() {
auto s = "Hello, world!\n";
decltype("Hello, world!\n") t = "Hello, world!\n";
std::cout << sizeof s << ", ";
std::cout << sizeof t << ", ";
std::cout << sizeof "Hello, world!\n" << '\n';
return 0;
}
打印
4, 15, 15
这表明s
的类型为char *
。考虑到字符串文字的类型和t
是char [15]
,这感觉很奇怪。
为什么此程序不打印15, 15, 15
?
为什么auto
在分配给字符串文字时声明指针类型而不是数组类型?