zoukankan      html  css  js  c++  java
  • iOS开发-Object-C学习之结构体使用

    前言:定义结构体并不是定义一个变量,而是定义了种数据类型。

    结构体作用:

      结构体和其他类型基础数据类型一样,例如int类型,char类型 只不过结构体可以做成你想要的数据类型。以方便日后的使用。
      在实际项目中,结构体是大量存在的。研发人员常使用结构体来封装一些属性来组成新的类型。由于C语言内部程序比较简单,研发人员通常使用结构体创造新的“属性”,其目的是简化运算。
      结构体在函数中的作用不是简便,其最主要的作用就是封装。封装的好处就是可以再次利用。让使用者不必关心这个是什么,只要根据定义使用就可以了。

    摘自:百度百科

    一、定义结构体

    基本语法:

    struct 结构体名字 {
        类型 名字;
        类型 名字;
        类型 名字;
        ... 
    };

    结构体的定义方法三种,请继续往下看。

    定义方法一:

    struct programmer {
        char *name;
        int age;
        int phone;
    };

    初始化:

    struct programmer proTest = {"Garvey", 28, "13823992034"};

    定义方法二:

    struct {
        int age;
        int tag;
    } str1;

    初始化,这个只能使用点语法,具体请往下看。

    定义方法三:

    typedef struct {
        char *name;
        int tag;
    } structExt;

     使用typedef可以创建新类型,现在可以使用structExt定义新的结构体变量了。

    我们可以看到,方法一和方法二的区别。方法一声明了结构体名字,但没有声明结构体变量。方法二声明了结构体变量,但没有声明结构体名字。因此我们可以知道:“结构体名字和结构体变量必须有其一,也可以两者都存在”。

    结构体名字及结构体变量都存在,例:

    struct programmer {
        char *name;
        int age;
        char *phone;
    } proSuccess, proFail;

    二、结构体成员访问和赋值

    访问和赋值都是使用点语法

    访问:

    proSuccess.name;
    proSuccess.age;
    proSuccess.phone;

    赋值/修改:

    proSuccess.name = "Calvin";
    proSuccess.age = 27;
    proSuccess.phone = "13138940202";

    三、注意点

    错误初始化写法,这句话在预编译时就会报错:

    proSuccess = {"name", 10, "13732423452"};

    写了这么多,都还没输出过任何内容,这里要说的是。使用char定义的变量,输出时要使用%s。例:

    NSLog(@"%s- %d - %s", proTest.name, proTest.age, proTest.phone);

    PS:使用char定义的变量,不能存储中文(因为我不知道如何输出,输出会变成乱码,你根本都看不懂)。


    博文作者:GarveyCalvin

    博文出处:http://www.cnblogs.com/GarveyCalvin/

    本文版权归作者和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作!

  • 相关阅读:
    基于antlr的表达式解析器
    ANTLR语法层的选项及动作
    Understanding ANTLR Grammar Files
    写给Git初学者的7个建议
    Top 8 Diagrams for Understanding Java
    技术面不深入
    一个初级程序员学习新技术的策略
    SoftReference,WeakReference&WeakHashMap
    探索Antlr(Antlr 3.0更新版)
    Five minute introduction to ANTLR 3
  • 原文地址:https://www.cnblogs.com/GarveyCalvin/p/4160077.html
Copyright © 2011-2022 走看看