c++ - 为什么在函数名中使用取消引用“*”运算符?
问题描述
我目前一直在学习斯坦福在线提供的这门入门编程课程,CS106B。在链接列表结构中,教授实现了我无法理解的这段代码。
Entry *GetNewEntry(){
cout << "Enter name (ENTER to quit):";
string name = GetLine();
if (name == "") return NULL;
Entry *newOne = new Entry; // allocate in heap
newOne->name = name;
cout << "Enter address: ";
newOne->address = GetLine();
cout << "Enter phone: ";
newOne->phone = GetLine();
newOne->next = NULL; // no one follows
return newOne;
}
谁能帮我理解为什么在函数名之前有一个取消引用运算符。如果我们删除它会发生什么变化?我试图用谷歌搜索它,但我没有收到任何令人满意的答案。
解决方案
函数的返回值GetNewEntry
是一个类型的指针Entry *
。
如果您*
按原样从代码中删除 ,您最终会返回 a Entry
,并且代码将无法编译,因为newOne
是 a Entry *
。
推荐阅读
- c++ - boost的库安装路径
- javascript - setTimeout 函数缺少形式参数
- reactjs - 尽管依赖项没有变化,useEffect 运行无限循环
- c++ - 如何使用 typedef 作为声明的基本类型的一部分?
- forms - VB6 表单位置(上、左)和值类型(即整数)的问题
- c# - 连接到 FTP 端口 21 时,SSH.NET 出现“套接字读取操作超时”异常
- c# - 是否可以更改 NSwag 生成的示例值部分的内容?
- c - 如何使用 Cython 将 C 结构数组转换为 numpy 数组
- task - 如何使用 completed_count 跟踪 Celery 中的任务组完成情况?
- matlab - 如何使用其质心裁剪子图像?