看官们,我们在第三回中介绍了OC中的复合类型,有看官说介绍的不够详细,因此我使用图形的方式对所有基本类型做了总结,请参考以下图片中的内容。

看完类型的总结后,我们将通过具体的代码来演示如何使用这些类型。
1 #import <Foundation/Foundation.h>
2 struct Phone {
3 int length;
4 int width;
5 };
6
7 typedef struct _iphone {
8 int length;
9 int width;
10 }IPhone;
11
12 typedef enum _week{
13 MON,
14 TUR,
15 WEN
16 }Week;
17
18 bool equal(IPhone a,IPhone b) {
19 if(a.length == b.length && a.width == b.width)
20 return YES;
21 else
22 return NO;
23 }
24
25
26 int main(){
27
28 struct Phone p1;
29 IPhone p2,p3;
30 //enum Week w1,w2;
31 Week w1,w2;
32
33 p1.length = 3;
34 p1.width = 6;
35
36 p2.length = 2;
37 p2.width = 4;
38
39 p3.length = 2;
40 p3.width = 4;
41
42 w1 = MON;
43 w2 = WEN;
44
45 NSLog(@"size of p1: %i,%i",p1.length,p1.width);
46 NSLog(@"size of p2: %i,%i",p2.length,p2.width);
47
48 if(equal(p2,p3))
49 NSLog(@"p2 == p3");
50 else
51 NSLog(@"p2 != p3");
52
53 NSLog(@"w1: %i, w2: %i",w1,w2);
54 }
编译上面的程序,并且运行,可以得到以下结果:
2020-10-30 21:38:15.539 ex.out[1742:88999] size of p1: 3,6
2020-10-30 21:38:15.539 ex.out[1742:88999] size of p2: 2,4
2020-10-30 21:38:15.539 ex.out[1742:88999] p2 == p3
2020-10-30 21:38:15.539 ex.out[1742:88999] w1: 0, w2: 2
首先介绍的是结构体,在代码中我们定义了两个结构体。表示手机(Phone和IPhone)类型,它们都有两个int类型的成员,不同之处在于一个是标准的结体体定义,另外一个使用了typedef关键字来重定义,在实际中这种用法更加多一些,因为在定义结构体变量的时候,不需要添加struct关键字,代码中的IPone类型就是这么做的。结构体在实际代码中使用比较少,因为OC提供了类这种复合类型,它比结构体更加强大,而且也是面向对象的基础,后面章回中我们会介绍类这种强大的类型。
结构体有两点需要注意的:
- 1.结构体变量赋值时需要给结构体中每一个变量都赋值;
- 2.结构体变量比较时和基本类型变量比较不同,不能简单地使用等号进行比较,需要比较结构体中的每一个成员,为此我们在代码中定义了equal函数,它用来比较IPhone类型的两个结构成员是否相等。
接着介绍一下枚举类型,枚举类型用来指定一些固定数量的数值,任何枚举类型变量的值,只能是这些固定值中的某一个。枚举类型的定义最好使用typedef关键字,原因和结构体定义时一样,我们刚刚介绍过。
接下来我们结合代码进行说明,代码中的位于大括号中的MON等数值就是刚才所说的”固
定数量的数值“,它们有自己的名字,也可以称其为枚举常量,它们的值从0开始,依次递增。当然这是默认的规则,也可以手动指定它们的值。我们在代码中定义了两个枚举类型变量,然后给它们赋值,并且通过NSLog打印出了它们的值,大家可以参考程序运行结果。
枚举在程序中使用的情况比较多,特别是IOS编程各种控件的属性值,几乎都是枚举,至于联合体,我们先不通代码演示了,因为实际情况中使用的非常少。
数组和指针是比较重要的复合类型,我们使用单独的章回进行介绍。其它的复合类型都与类相关,我们在面向对象的章回中再做介绍。
看官们,我们在本章回中通过代码演示了结构体和枚举这两种复合类型的用法,最后我们对文章中的知识做一个概述性总结:
- 1.复合类型一共有七种,具体内容可以参考正文中的图片;
- 2.结构体定义建议使用typedef,使用时有两点注意事项;
- 3.枚举定义建议使用typedef,枚举变量只能使用枚举常量值,枚举常量值可以使用默认值,也可以手动指定值;
- 4.结构体和联合体使用较少,重点掌握枚举的用法,可以参考代码进行练习;
看官们,欲知后事如何且听下回分解!
本文通过代码示例介绍了Objective-C中的结构体(struct)和枚举(enum)的使用。讲解了结构体的typedef用法,强调了结构体赋值和比较的注意事项,以及枚举的定义和枚举常量的使用。文中还提到结构体和枚举在实际编程中的应用情况,指出枚举在iOS开发中尤其常见。最后,对结构体和枚举的关键知识点进行了总结。
227

被折叠的 条评论
为什么被折叠?



