指针 - 函数定义中结构后的“*”是什么意思?

巴克斯顿

我正在学习 C 中的指针。我遇到了一个返回类型我不理解的函数。函数定义为: extern PHONE* findPhone()

电话是一个结构。该函数返回一个 PHONE 指针。如果它想这样做,函数定义中的返回类型不应该是 '*PHONE'

约翰·博德
extern PHONE* findPhone()

被解析为

extern PHONE (*findPhone())

C 中的声明分为两个主要部分 - 一系列声明说明符(类型说明符、存储类说明符、类型限定符等),后面是逗号分隔的声明符列表。

数组性、函数性和指针性被指定为声明符的一部分。在上面的声明中,extern PHONE是声明说明符,*findPhone()是声明符;它表示该findPhone()函数返回一个指向PHONE.

这个想法是声明符的结构与相同类型代码中的表达式结构相匹配。在这种情况下,如果您想访问PHONE函数返回的对象,您将调用该函数并取消引用结果:

a_phone = *findPhone();

表达式 的类型*findPhone()PHONE,因此函数的声明是

PHONE *findPhone();

除了分隔相同类型的标记(例如externPHONE,它们都是标识符)之外,空格并不重要。由于*字符永远不能成为标识符的一部分,因此您是否写无关紧要

extern PHONE* findPhone();

要么

extern PHONE *findPhone();

要么

extern PHONE    *     findPhone()     ;

甚至

extern PHONE*findPhone();

它们都将以相同的方式解释。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章