我正在学习 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();
除了分隔相同类型的标记(例如extern
和PHONE
,它们都是标识符)之外,空格并不重要。由于*
字符永远不能成为标识符的一部分,因此您是否写无关紧要
extern PHONE* findPhone();
要么
extern PHONE *findPhone();
要么
extern PHONE * findPhone() ;
甚至
extern PHONE*findPhone();
它们都将以相同的方式解释。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句