【发布时间】:2015-07-20 20:36:24
【问题描述】:
遇到一段代码,它定义并使用了 typedef,如下所示:
typedef char CHAR[10];
void fun(std::string s) {}
int main()
{
CHAR c;
fun(c);
}
奇怪的是,这行得通。我的问题是为什么要定义和使用这样的 typedef 以及它是如何工作的。在我看来,单独使用 CHAR 是行不通的,它应该始终是 CHAR[10]。
此外,如果我将 fun 声明更改为接受 std::string& 而不是 std::string,则会引发编译错误。我不知道为什么。
【问题讨论】:
-
什么新的
CHAR类型?请在问题中输入代码,而不仅仅是标题。 -
“为什么要定义和使用这样的 typedef”:我会问同样的问题。但我怀疑有人担心如果他们没有将数组的大小包含在
typedef中,他们会忘记它的大小。事实上,sizeof(CHAR)返回 10。