为什么auto在`auto s =" abc"`中产生char指针而不是char数组?

时间:2016-01-31 20:00:28

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

这个程序

#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 *。考虑到字符串文字的类型和tchar [15],这感觉很奇怪。

为什么此程序不打印15, 15, 15

为什么auto在分配给字符串文字时声明指针类型而不是数组类型?

0 个答案:

没有答案