zoukankan      html  css  js  c++  java
  • 类与结构体区别

    结构体:

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

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



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

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

    2、Class类型的定义

    typedef struct objc_class *Class;

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

    3、获得类对象的方式

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

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

        // 第一种方式 通过类名调用类方法
        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指针访问类的成员变量,也可以调用类的对象方法(包括这个类的所有的对象方法都可以调用)。

  • 相关阅读:
    20155339 第七周加分项目 mybash的实现
    2017-2018-1 20155339 《信息安全系统设计基础》第十一周学习总结
    2017-2018-1 20155339 实验四 外设驱动程序设计
    2015539平措卓玛课堂测试(ch06)
    2017-2018-1 20155339 《信息安全系统设计基础》第九周学习总结
    2019-2020信息安全系统设计基础 20175306 20175309 20175322 实验五 通讯协议设计
    2019-2020信息安全系统设计基础 20175306 20175309 20175322 实验四 外设驱动程序设计
    2019-2020信息安全系统设计基础 20175306 20175309 20175322 实验三 并发程序
    2019-2020信息安全系统 20175306 20175309 20175326 实验二 固件程序设计
    2019-2020信息安全系统设计基础 20175306 20175309 20175326 实验一 开发环境的熟悉
  • 原文地址:https://www.cnblogs.com/yy50831/p/9944065.html
Copyright © 2011-2022 走看看