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

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

例如:

CGRect mainScreenRect = [UIScreen mainScreen].bounds;

而不是:

CGRect *mainScreenRect = [UIScreen mainScreen].bounds;


正在回答

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

1回答

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

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 星
iOS入门:基础语法与常用控件
  • 参与学习       1337    人
  • 提交作业       712    份
  • 解答问题       1878    个

很多人都在疑问没有基础该怎么学习iOS开发?不用担心,本路径采用游戏关卡式的教学模式,并且以经典OC与最新Swift双重结合的教学内容,帮助大家快速掌握两种iOS开发语言基础,去掉“零”标签。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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