从C语言角度看OC编程里类、类对象


在c语言里面 每个变量、指针都有一个类型.


例如:int a;变量a 的类型为int


int *p;  指针变量p的类型为int *;


定义变量的形式:类型名  变量名 


那么这个 类型名有什么用呢?

1、能访问内存的大小。

例如一般的在64位的苹果系统中int  占4个字节。

int a,表示a这个变量占4个字节。

所有当访问变量a的时候会访问4个字节。


2、如何解析数据。因为不同类型的数据在内存中的存储形式是不一样的。

例如在内存中有一个数据 000000000000101,如果类型是int 则解析出来的数据为5,若为float类型则解析出来的数据则不一定是5因为不同类型的数据存储的原则是不一样的。


定义一个结构体的过程其实就是在定义一种数据的类型,和int double float 等基本数据类型一样,只是基本数据类型是编译器定义好的,而为了满足描述更多现实中的信息,c语言里面运行我们自己定义自己的类型,因此有了结构体。

实际结构体就是描述对象的性质的集合。


在看一个结构体类型:

定义一个结构体struct student {

int age;

char name;


定义的一个结构体实际上是定义了一种数据类型名为struct student 的新类型,我们可以利用它来定义变量、指针等,例如:struct student  stu1;struct student  *p; 

定义了变量stu1,该变量属于struct student类型,则它拥有了该类型里面的age 和name 属性。

在面向对象的语言中,和定义结构体一样定义了类,只是类里面不仅仅包括了属性,还把一些方法也包含进去了。可以将面向对象oc中的类理解为c语言中的结构体类名。

在oc里面定义类的形式为:

@interface 类名:父类

变量;

方法、属性声明等。

@end


先定义一个类:

@interface Animal :NSObject

{

int age;

nsstring *name;


}

-(void)method;

@end

在oc中定义一个类对象和在c语言里面定义一个结构体变量类似。

struct student  stu;描述为定义了一个类型名为struct student 的stu变量。

 Animal *dog;描述为定义了一个类为Animal 的dog类对象。


stu 可以拥有并可以访问struct student这种类型里面的变量。

dog 也拥有并可以访问Animal*这种类 里面的实例变量。


切记:在oc中所有的对象都是通过指针的形式来指向的。 


在学习oc之前需要深入理解结构体,会对后面oc的学习有很大的帮助。






定义一个结构体的过程其实就是在定义一种数据的类型,和int double float 等基本数据类型一样,只是基本数据类型是编译器定义好的,而为了满足描述更多现实中的信息,c语言里面运行我们自己定义自己的类型,因此有了结构体。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

moxi_wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值