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

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

二:结构体的创建

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. -_-#【Canvas】

    context.lineWidth = 0.5 incorrect display lineWidth=1 at html5 canvas canvas.save() canvas.restore() ...

  2. Silverlight获取DataGrid选中的行数据

    注意触发的事件为:CurrentCellChanged后台代码: /// <summary> /// 获取datagrid当前选中的单元格数据 /// 如果绑定的数据源为实体的话默认选中的 ...

  3. Python datetime时间日期处理

    在处理微博数据的时候,经常会遇到对时间数据的处理,于是决定开始去一步一步的总结下Python关于时间的常见处理,主要以参考Python的官方文档为主,结合实例.接下来会一步一步更新,敬请期待

  4. Hat’s Words hdu-1247

    就是查找这个单词能不能有两个单词组成,简单的字典树题目 ////////////////////////////////////////////////////////////// #include& ...

  5. maven项目中找不到Maven Dependencies解决办法

    用eclipse创建maven项目后,在Deployment Assembly中通过Add...->Java Build Path Entries导入Maven Dependencies时,发现 ...

  6. java—— 编译与运行

    内容:使用javac 指定编译多个目录下java文件 链接:http://zhidao.baidu.com/link?url=W5ZERu8_ouGD-L_JH0vqqawhJNitsGbonQAAT ...

  7. Redis源代码分析(三)---dict哈希结构

    昨天分析完adlist的Redis代码.今天立即马不停蹄的继续学习Redis代码中的哈希部分的结构学习,只是在这里他不叫什么hashMap,而是叫dict.并且是一种全新设计的一种哈希结构,他仅仅是通 ...

  8. Android项目实战--手机卫士18--读取用户的短信内容以及短信备份

    我们今天要说的就是我们手机卫士里面的高级工具里面的短信备份功能啦,其实这个软件备份的功能也很简单,就是把用户的短信读出来,然后写到一个xml或者数据库里面, 但我们这里的是读取到xml里面的. 首先我 ...

  9. Spring-----1、Spring一个简短的引论

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGVrZXdhbmd6aQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  10. rsync+inotify实现服务器之间文件实时同步--转

    之前做了“ssh信任与scp自动传输脚本”的技术文档,此方案是作为公司里备份的方法,但在实际的运行中,由于主服务器在给备份服务器传输的时候,我们的主服务器需要备份的文件是实时.不停的产生的,造成不知道 ...