为什么在函数名称中使用了取消引用的“ *”运算符?

时间:2019-09-27 03:45:35

标签: c++

我目前正在参加斯坦福在线CS106B提供的入门编程课程。教授在“链表”结构中实现了此代码,我无法动脑筋。

n

任何人都可以帮助我理解为什么在函数名称之前有一个取消引用运算符。如果我们删除它会发生什么变化? 我曾尝试用Google搜索它,但没有收到满意的结果 答案。

2 个答案:

答案 0 :(得分:5)

函数GetNewEntry的返回值是类型Entry *的指针。

如果按原样从代码中删除*,则最终将返回Entry,并且代码将无法编译,因为newOne是{{1 }}。

答案 1 :(得分:0)

这是一种称为“指向入口的指针”的类型。建议将星号放在类型名称旁边,以便于理解。

//suggested to put the asterisk next to type name
Entry* GetNewEntry(){...
}

//it's ok to put next to function name too
Entry *GetNewEntry(){...
}

假设Entry是一个结构,那么Entry变量的大小将是属性大小的总和。但是,Entry*是指向Entry结构的指针,无论其内部有多少属性,它始终为4字节大小(32位系统)或8字节大小(64位系统)。结构。

编辑: 建议的声明更容易理解,但在这种情况下看起来是错误的:

//a is pointer, b is Entry
Entry* a,b;

解决方案是在每个行上声明每个指针变量:

//a is pointer, b is pointer
Entry* a;
Entry* b;