我最近一直在为傻瓜阅读 C++,要么标题用词不当,要么他们没有指望我。在关于利用带有字符串的指针数组的部分中,它们显示了一个函数,我完全被难住了,不知道该转向哪里。
char* int2month(int nMonth)
{
//check to see if value is in rang
if ((nMonth < 0) || (nMonth > 12))
return "invalid";
//nMonth is valid - return the name of the month
char* pszMonths[] = {"invalid", "January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"};
return pszMonths[nMonth];
}
首先(但不是主要问题),我不明白为什么返回类型是指针以及如何在不超出范围的情况下返回 pszMonths 。我已经在这本书和网上阅读过它,但在这个例子中我没有得到它。
我的主要问题是“这是如何工作的?!?!”。我不明白如何创建一个指针数组并实际初始化它们。如果我没记错的话,你不能用数字数据类型来做到这一点。“指针数组”中的每个指针是否像一个数组本身,包含组成单词的各个字符?这整件事让我大吃一惊。
8 月 20 日 - 因为在我看来,试图帮助我的人对我的困惑实际上源于何处感到有些困惑,我会尝试更好地解释它。我特别关注的代码部分如下:
//nMonth is valid - return the name of the month
char* pszMonths[] = {"invalid", "January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"};
我认为当你创建一个指针时,你只能将它分配给另一个预定值。我很困惑,似乎是一个指针数组(按这里的书)初始化月份名称。我不认为指针实际上可以初始化值。数组是否动态分配内存?“无效”本质上等同于“新字符”;声明或类似的东西?
如果他们回答了我的问题,我会尝试重新阅读这些帖子,但我只是第一次不明白。