我开始研究如何用c ++编写代码。 我一直在阅读c ++ primer plus(第5版)的书,并且遇到了一个我不太了解的示例程序。基本上,程序会询问您的姓氏,并为您提供存储位置的地址:
#include <iostream>
#include <cstring>
using namespace std;
char* getname();
int main();
{
char* name;
name = getname();
cout << name << " at " << (int*)name << endl;
delete [] name;
name = getname();
cout << name << " at " << (int*)name << endl;
delete [] name;
return 0;
}
char* getname()
{
char temp[80];
cout << "Enter last name: ";
cin >> temp;
char* pn = new char [strlen(temp)+1];
strcpy(pn, temp);
return pn;
}
我不太明白为什么char * getname()函数需要dereference运算符。嘿,我在理解这个项目时遇到了一些麻烦。 对不起,如果这个问题就像一个愚蠢的问题,但我很困惑。这就是全部。谢谢!..
答案 0 :(得分:0)
name
- 它是指向第一个char的指针。
std::cout
与<<
- 具有不同的行为,具体取决于您给予他的内容。
char* name
) - cout
打印此序列。 int
号码 - cout
此号码的打印地址( 0x1105010 ) (int*)
- 投射到int
的指针。