类与结构体区别

结构体:

C语言容许用户本身指定这样一种数据结构,它由不一样类型的数据组合成一个总体,以便引用,这些组合在一个总体中的数据是互相联系的,这样的数据结构称为结构体,它至关于其它高级语言中记录。
  声明一个结构休类型的通常形式以下:
  struct 结构体名
  {成员列表};
  结构体名,用做结构体类型的标志,它又称 结构体标记,大括号内是该结构体中的各个成员,由它们组成一个结构体,对各成员都应进行类型声明如:
  类型名 成员名;

 结构体使用:
  (1)先声明结构体类型再定义变量名
  如上面已定义了一个结构体类型 struct student,能够用它来定义变量。如:
  struct student  //结构体类型名
  student1, student2//结构体变量名
  定义了 student1, student2 为 struct student 类型的变量。
  在定义告终构体变量后,系统会为之分配内存单元。
  (2)它的做用与第一种方法相同,即定义了两个 struct student 类型的变量 student1, student2 这种形式的定义的通常形式为
  struct 结构体名
  {
  成员表列
  }变量名表列;
  (3)直接定义结构类型变量
  其通常形式为
  struct
  {
  成员表列
  }变量名表列;
  即不出现结构体名。



类(class):
类是具备类似内部状态和运动规律的实体的集合(或统称、抽象)。类的概念来自于人们认识天然、认识社会的过程。在这一程中,人们主要使用两种方法:由特殊到通常的概括法和由通常到特殊的演绎法。在概括的过程当中,咱们从一个个具体的事物中把共同的特征抽取出来,造成一个通常的概念,这就是"归类";如:昆虫、狮子、爬行动物,由于它们都能动因此归类为动物。在演绎的过程当中咱们又把同类的事物,根据不一样的特征分红不一样的小类,这就是"分类";如动物->猫科动物->猫->大花猫等。对于一个具体的类,它有许多具体的个体,咱们就管这些个体叫作"对象"。类的内部状态是指类集合中对象的共同状态;类的运动规律是指类集合中对象的共同运动规律。如:博拉图对人做以下定义:人是没有毛能直立行走的动物。在博拉图的定义中"人"是一个类,具备"没有毛、直立行走"等一些区别于其它事物的共同特征;而张3、李4、王5、流氓陈水扁等一个个具体的人,是"人"这个类的一个个"对象"。
对象(object):
即指现实世界中各类各样的实体。它能够指具体的事物也能够指抽象的事物。如:整数一、二、三、流氓陈水扁、苹果、飞机、规则、法律、法规、表单等等。每一个对象皆有本身的内部状态和运动规律,如流氓陈水扁具备名字、身高、体重等内部状态,具备吃饭、睡觉、打人、偷税、漏税等运动规律。在面向对象概念中咱们把对象的内部状态称为属性、运动规律成为方法或事件。

一、类也是一个对象,是Class类型的对象,简称“类对象”,类名就表明着类对象,每一个类只有一个类对象。

二、Class类型的定义

typedef struct objc_class *Class;

根据类的定义来看其实类本事也是一个结构体

三、得到类对象的方式

    // 第一种方式 经过类名得到
    Class c = [Person class];
        
    // 第二种方式 经过类的对象得到
    Person *p = [[person alloc] init];
    Class c = [p class];

注意:根据第二条的定义Class已经包含了* 因此在使用的时候不须要再加*
四、调用类方法的方式

    // 第一种方式 经过类名调用类方法
    Person *p = [Person new];
        
    // 第二种方式 经过类对象名调用类方法
    Class c = [Person class];
    Person *p = [c new];


OC方法和函数的区别:
OC方法只能声明在@interface和@end之间,只能实如今@implementation和@end之间。也就是说OC方法不能独立于类存在
C函数不属于类,跟类没有联系,C函数只归定义函数的文件全部
低级错误:方法有声明,可是实现的时候写成了函数


     OC中类方法必须使用+(加号)开头。类方法是属于类对象的,因此无需建立类的实例对象咱们就能够直接使用它们。类方法中的self指的是这个类,在类方法中self只能调用这个类的类方法(包括这个类的全部的类方法均可以调用)。

     OC中对象方法必须使用-(减号)开头。类方法必须由类的实例对象来调用,在类方法中能够经过self指针访问类的成员变量,也能够调用类的对象方法(包括这个类的全部的对象方法均可以调用)。数据结构

相关文章
相关标签/搜索