这个功能如何运作? char * getname(); C ++

时间:2017-06-21 05:53:34

标签: c++ function dereference

我开始研究如何用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运算符。嘿,我在理解这个项目时遇到了一些麻烦。 对不起,如果这个问题就像一个愚蠢的问题,但我很困惑。这就是全部。谢谢!..

1 个答案:

答案 0 :(得分:0)

name - 它是指向第一个char的指针。 std::cout<< - 具有不同的行为,具体取决于您给予他的内容。

  • 如果它指向第一个char的指针(char* name) - cout打印此序列。
  • 如果指针指向内存中int号码 - cout此号码的打印地址( 0x1105010

(int*) - 投射到int的指针。