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

来源:互联网 发布:win7无法更改网络位置 编辑:程序博客网 时间:2024/05/18 11:09


在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语言里面运行我们自己定义自己的类型,因此有了结构体。
0 0
原创粉丝点击