我正在学习Core Graphics,特别是学习CGContextRef。我的问题是关于不透明数据类型的语法和实现细节(如果它们是可知的)。我知道像CGContextRef这样的不透明类型是对内存中某些底层结构的引用(指针?),并且它是不透明的,因为这个结构的细节对开发人员是隐藏的。
所以如果我有一个声明的变量:CGContextRef context = UIGraphicsGetCurrentContext();
为什么上下文不需要“*”才能表明这是一个引用类型/指针?这种句法奇点的语义意义是什么?
答案 0 :(得分:2)
按住Command键并单击符号CGContextRef
以跳转到CGContext.h
中的定义,您将看到原因:
typedef struct CGContext *CGContextRef;
您不必在*
变量之前添加context
,因为*
是CGContextRef
类型定义的一部分。