为什么建立CGRect, CGSize, CGFloat等对象时, 不用在类型后面加星号?

为什么建立CGRect, CGSize, CGFloat等对象时, 不用在类型后面加星号?

例如:

CGRect mainScreenRect = [UIScreen mainScreen].bounds;

而不是:

CGRect *mainScreenRect = [UIScreen mainScreen].bounds;


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

因为CGSize、CGRect是结构体类型的数据,不是对象类型,所以不需要指针指向。你可以在Xcode中写一个CGRect,然后按住command键,同时用鼠标点击CGRect可以看到如下:

1
2
3
4
5
struct CGRect {
       CGPoint origin;
       CGSize size;
};
typedef struct CGRect CGRect;


  • 慕九州029785 提问者 #1
    为什么是结构体就不用加星号呢? 我现在的理解是:加星号的意思是这个指针指向的内容,而在这个例子中,结构体CGRect mainScreenRect中的mainScreenRect直接就是指针指向的对象。但是为什么是这样呢?
    2018-10-16 17:40:02
  • Tender10 回复 提问者 慕九州029785 #2
    *号的是指针变量,是用来存放对象的指针的。没有加*的是基本数据类型,例如int,float之类的基本数据类型,或者结构体等等,这些是非对象类型。
    2018-10-16 17:51:52
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师
插入代码