一:结构体与枚举的介绍:

结构体与枚举:是一种存储复杂的数据
结构体:是用户自定义的一种类型,不同类型的集合,而数组是相同类型变量的集合。

二:结构体的创建

struct user
{
    char username[20];
    int score;
}
这里两种不同类型的属性的结构体。
创建结构体,就是创建一个类型,计算机并没有分配内存空间。

三:结构体的调用

struct user u1;
这里就是对结构体的调用,这个时候计算机才会为其分配内存空间。
u1.username[20] = "Tom";
u1.score = 98;
以上两句就是对结构体的赋值。

四. 用指针指向结构体

char * p = &u1;
说明p是指向user类型的变量u1的地址;
则:u1.score = 98 也可以写作 (*p).score = 98;
引入新概念:p->score,用于表示(*p).score;
  
 下面来看一个练习
#include
 
struct test
{
    int a;
    int b;
    char c;
};
 
int main(void)
{
    struct test s1 = {9,2,'A'};
    struct test * p = &s1;
    printf("%d %d %c\n", s1.a, s1.b, s1.c);
    p->a = 5;
    p->b = 4;
    p->c = 'C';
    printf("%d %d %c\n", s1.a, s1.b, s1.c);
    
    return 0;
}

五:枚举的介绍

枚举:既不适用于普通的类型也不适合结构体那么就可以使用枚举
 

六:枚举的定义

 #define MON 0
    #define TUE 1
    #define WED 2
    #define THR 3
    #define FRI 4
    #define SAT 5
    #define SUN 6
    printf("MON = %d\n", MON);
    printf("TUE = %d\n", TUE);
    printf("WED = %d\n", WED);
    printf("THR = %d\n", THR);
    printf("FRI = %d\n", FRI);
    printf("SAT = %d\n", SAT);
    printf("SUN = %d\n", SUN);
}

七:枚举的使用

我们结合上面的定义来使用者合格枚举
main(){ 
  enum weekday  { sun,mon,tue,wed,thu,fri,sat } a,b,c; 
  a=sun;  
 b=mon;  
 c=tue;  
 printf("%d,%d,%d",a,b,c);  
 }
枚举坦白的说:就是c帮你封装好的一个define集合,用便于记忆的字符来代表常量
 

八:枚举与结构体总结

枚举提供一种使用成组的相关常数以及将常数值与名称相关联的方便途径。例如,可以为一组与一周中的七天相对应的整数常数声明一个枚举,然后在代码中使用这七天的名称而不是它们的整数值。

对于枚举有以下附加限制:    
   它们不能定义自己的方法。    
   它们不能实现接口。    
   它们不能定义属性或事件。

结构用于构造包含数据和函数的数据结构。

枚举跟结构是两回事,没什么可比性。枚举是值,结构是数据结构,换句话说,结构是值和方法的集合。
结构和枚举类型从程序实现的角度来说,是用更接近自然语言的方式来表达数据。比如说实现2维空间的点,你可以使用2维数组,但是可读性会很差。此时,你可以换用结构,结构中含有属性项x、y,这样更接近我们实际使用的方式。
枚举类型本质上就是一个标签集合,之所以有枚举变量,也是为了可读性。比如一个进程的状态有五种:创建、准备、运行、停止、销毁,如果使用数字来表示状态,我们直接用0~4来表示就行,但这样别的人会无法理解,通过枚举类型我们声明eunm status{init,ready,run,stop,destroy},就可以使程序的可读性提高
 
 
 
 
 

iOS开发——C篇&结构体与枚举的更多相关文章

  1. iOS开发UI篇—Button基础

    iOS开发UI篇—Button基础 一.简单说明 一般情况下,点击某个控件后,会做出相应反应的都是按钮 按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置 二.按钮的三种状 ...

  2. iOS开发UI篇—transframe属性(形变)

    iOS开发UI篇—transframe属性(形变) 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两 ...

  3. iOS开发UI篇—UIScrollView控件介绍

    iOS开发UI篇—UIScrollView控件介绍 一.知识点简单介绍 1.UIScrollView控件是什么? (1)移动设备的屏幕⼤大⼩小是极其有限的,因此直接展⽰示在⽤用户眼前的内容也相当有限 ...

  4. iOS开发UI篇—transframe属性(形变)

    iOS开发UI篇—transframe属性(形变) 1. transform属性 在OC中,通过transform属性可以修改对象的平移.缩放比例和旋转角度 常用的创建transform结构体方法分两 ...

  5. iOS开发UI篇—核心动画(基础动画)

    转自:http://www.cnblogs.com/wendingding/p/3801157.html 文顶顶 最怕你一生碌碌无为 还安慰自己平凡可贵 iOS开发UI篇—核心动画(基础动画) iOS ...

  6. iOS开发UI篇—Kvc简单介绍

    ios开发UI篇—Kvc简单介绍 一.KVC简单介绍 KVC key valued coding 键值编码 KVC通过键值间接编码 补充: 与KVC相对的时KVO,即key valued observ ...

  7. iOS开发拓展篇—CoreLocation定位服务

    iOS开发拓展篇—CoreLocation定位服务 一.简单说明 1.CLLocationManager CLLocationManager的常用操作和属性 开始用户定位- (void)startUp ...

  8. iOS开发基础篇-Button基础

    一.简单介绍  UIButton 的功能:响应用户操作.显示文字.显示图片.调整内部图片和文字的位置. 二. UIButton 的状态  UIControlStateNormal :普通状态,为默认情 ...

  9. iOS开发UI篇—UITabBarController简单介绍

    iOS开发UI篇—UITabBarController简单介绍 一.简单介绍 UITabBarController和UINavigationController类似,UITabBarControlle ...

随机推荐

  1. Linux环境下使用图形化界面的SVN客户端软件-RabbitVCS

    如果想在Linux环境下使用图形化界面的SVN客户端软件,那么RabbitVCS绝对是首选,可以媲美Windows环境下用的TortoiseSVN,甚至连操作都基本一样,所以强烈推荐给各位童鞋. Ra ...

  2. Moss的使用

  3. 【笔试&面试】C#的托管代码与非托管代码

    1. C#中的托管代码是什么? 答:托管代码(ManagedCode)实际上就是中间语言(IL)代码.代码编写完毕后进行编译,此时编译器把代码编译成中间语言(IL),而不是能直接在你的电脑上运行的机器 ...

  4. Git详解之二 Git基础

    Git 基础 读完本章你就能上手使用 Git 了.本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到的也就是这几个命令.读完本章,你就能初始化一个新的代码仓库,做一些适当配置: ...

  5. 从APP消息推送所理解的观察者模式

    #1.什么是观察者模式? 观察者模式=(出版者+订阅者)模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能 ...

  6. PHP学习之[第01讲]开启PHP学习之路,融入新互联网时代

    小编本身现在是手机应用客户端开发者,包括iOS和Android. 学习PHP有两个目的: 1.为移动端提供服务: 2.向后台项目的架构方面学习.

  7. Effective C++ 第二版 40)分层 41)继承和模板 42)私有继承

    条款40 通过分层来体现"有一个"或"用...来实现" 使某个类的对象成为另一个类的数据成员, 实现将一个类构筑在另一个类之上, 这个过程称为 分层Layeri ...

  8. angular 按需加载

     angular.module('app',[]) .controller('ctrl',function ($http,$scope){ //ctrl控制器,名称作用的范围 html中ng-cont ...

  9. clang和gcc消除警告

    1. clang命令,它的作用是用来消除特定区域的clang的编译警告,-Wgnu则是消除?:警告, 例: #pragma clang diagnostic push #pragma clang di ...

  10. 705 - Slash Maze

    By filling a rectangle with slashes (/) and backslashes ( ), you can generate nice little mazes. Her ...