ios开发中的C语言学习—— 结构体简介

  在开发过程中,经常会需要处理一组不同类型的数据,比如学生的个人信息,由姓名、年龄、性别、身高等组成,因为这些数据是由不同数据类型组成的,因此不能用数组表示,对于不同数据类型的一组数据,可以采用结构体来进行存储。当然,对于面向对象的语言来说,最好是用类来表示,但是C语言是面向过程的,因此选择用结构体来表示。

一.结构体的定义
struct 结构体名{

        类型名 成员名1;

        类型名 成员名2;

        ... ...

        类型名 成员名n;

};
二.结构体的变量声明

1.先定义结构体类型,再定义变量

代码

//
//  main.c
//  结构体
//
//  Created by jerei on 15-12-27.
//  Copyright (c) 2015年 jerehedu. All rights reserved.
//

#include <stdio.h>

/**
 *  定义学生信息的结构体
 */
struct student{
    char name[100]; //姓名
    unsigned int age; //年龄
    char sex; //性别
    double height; //身高
};

int main(int argc, const char * argv[]) {

    //声明结构变量
struct student student1;
struct student student2;

    return 0;
}
三.定义结构体类型的同时定义变量

代码

//
//  main.c
//  结构体
//
//  Created by jerei on 15-12-27.
//  Copyright (c) 2015年 jerehedu. All rights reserved.
//

#include <stdio.h>

/**
 *  定义学生信息的结构体,并声明两个学生结构变量student1和student12
 */
struct student{
    char name[100]; //姓名
    unsigned int age; //年龄
    char sex; //性别
    double height; //身高
} student1, student2;

int main(int argc, const char * argv[]) {

    return 0;
}
四. 直接定义结构体类型变量,省略类型名

代码

//
//  main.c
//  结构体
//
//  Created by jerei on 15-12-27.
//  Copyright (c) 2015年 jerehedu. All rights reserved.
//

#include <stdio.h>

/**
 *  直接声明两个结构体变量student1和student2
 */
struct{
    char name[100]; //姓名
    unsigned int age; //年龄
    char sex; //性别
    double height; //身高
} student1, student2;

int main(int argc, const char * argv[]) {

    return 0;
} 
五.结构体的嵌套

1结构体中可以包含,但是不允许对结构体本身递归使用。

代码

//
//  main.c
//  结构体
//
//  Created by jerei on 15-12-27.
//  Copyright (c) 2015年 jerehedu. All rights reserved.
//

#include <stdio.h>

/**
 *  定义日期结构体
 */
struct date{
    unsigned int year;
    unsigned int month;
    unsigned int day;
};

/**
 *  定义学生结构体
 */
struct student{
    char name[100]; //姓名
    unsigned int age; //年龄
    char sex; //性别
    double height; //身高
    struct date birthday; //出生日期 (date结构体)
};

int main(int argc, const char * argv[]) {
    return 0;
六.结构体的初始化

<一> 结构体变量可以在声明的时候一次性给多个成员初始化,但是需要注意的是初始化的顺序必须和定义结构体成员的顺序一样,初始化成员的个数是可以少于总成员个数。

<二> 声明结构变量后,可以采用结构变量名.成员名来为其赋值或取值。

<三> 声明结构变量后,可以整体接收相同类型的其他结构变量的值。

代码

/
//  main.c
//  结构体
//
//  Created by jerei on 15-12-27.
//  Copyright (c) 2015年 jerehedu. All rights reserved.
//

#include <stdio.h>

/**
 *  定义日期结构体
 */
struct date{
    unsigned int year;
    unsigned int month;
    unsigned int day;
};

/**
 *  定义学生结构体
 */
struct student{
    char name[100]; //姓名
    unsigned int age; //年龄
    char sex; //性别
    double height; //身高
    struct date birthday; //出生日期
};

int main(int argc, const char * argv[]) {

    //<一> 一次性给多个成员赋值
    struct date birth1 = {1992, 1, 1};
    struct student student1 ={"jredu", 21, ‘f‘, 180.0, birth1};

    //<二>对单个成员赋值
    student1.age = 20;
student1.height = 178.0;

    //<三>相同类型的变量间可进行整体赋值
struct student student2 = student1;

    return 0;
}
七.结构体的使用

  结构体是我们自定义的一种数据类型,但是实际上和系统提供给我们的基本数据类型的使用是一样的,因此,除了可以用结构做变量,还可以用结构体做数组、指针、函数。

1结构数组

  用数组来存储一组结构体类型的变量,比如存放一组学生的结构数组。

  在使用结构数组的时候和上面讲的结构变量一样,同样可以通过三种方式来得到结构数组。

代码

/**
 *  <一>先定义结构体
 */
struct student{
    char name[100]; //姓名
    unsigned int age; //年龄
    char sex; //性别
    double height; //身高
} ;

int main(int argc, const char * argv[]) {

    //再声明结构数组
    struct student stus[10];

    return 0;
}

代码

/**
 *  <二>定义结构体同时直接声明结构数组
 */
struct student{
    char name[100]; //姓名
    unsigned int age; //年龄
    char sex; //性别
    double height; //身高
} stus[10];

代码

/**
 *  <三>直接声明结构数组
 */
struct {
    char name[100]; //姓名
    unsigned int age; //年龄
    char sex; //性别
    double height; //身高
} stus[10];

2指向结构体的指针

要想使用指针来间接改变数据,必须用相同类型的指针去指向对象。结构体类型的变量或者数组在使用的时候就需要使用结构体类型的指针。

代码

//
//  main.c
//  结构体
//
//  Created by jerei on 15-12-27.
//  Copyright (c) 2015年 jerehedu. All rights reserved.
//

#include <stdio.h>

/**
 *  定义结构体
 */
struct student{
    char *name; //姓名
    unsigned int age; //年龄
} ;

int main(int argc, const char * argv[]) {

    //声明结构变量
    struct student student1 = {"jredu", 21};

    //定义一个结构指针
    struct student *ptr = &student1;

    //访问结构成员,比如得到学生信息
    //方式1:直接使用结构变量
    printf("name = %s,age = %u\n",student1.name, student1.age);
    //方式2:通过指针得到结构变量
    printf("name = %s,age = %u\n", (*ptr).name, (*ptr).age);
    //方式3:直接用指针
    printf("name = %s,age = %u\n",ptr->name, ptr->age);

    return 0;
}

3结构体做函数的参数

代码

//
//  main.c
//  结构体
//
//  Created by jerei on 15-12-27.
//  Copyright (c) 2015年 jerehedu. All rights reserved.
//

#include <stdio.h>

/**
 *  定义结构体
 */
struct student{
    char *name; //姓名
    unsigned int age; //年龄
} ;

void func1(struct student tempStu);
void func2(struct student *ptrStu);

int main(int argc, const char * argv[]) {

    //声明结构变量
    struct student student1 = {"jredu", 21};
    struct student student2 = student1;

    //调用参数为结构变量的函数
    func1(student1);
    printf("student1 name = %s\n",student1.name);

    //调用参数为结构变量的函数
    func2(&student2);
    printf("student2 name = %s\n",student2.name);

    return 0;
}

void func1(struct student tempStu){
    tempStu.name = "apple";
}

void func2(struct student *ptrStu){
    ptrStu->name = "apple";
}
八、结构体的简化

typedef可以对数据类型进行重命名,因此在定义结构体的时候可以使用它来简化操作。

代码

//
//  main.c
//  结构体
//
//  Created by jerei on 15-12-27.
//  Copyright (c) 2015年 jerehedu. All rights reserved.
//

#include <stdio.h>

/**
 *  定义结构体
 */
typedef struct {
    char *name; //姓名
    unsigned int age; //年龄
} Student;

int main(int argc, const char * argv[]) {

    //声明结构变量
    Student student1 = {"jredu", 21};

    return 0;
}

作者:杰瑞教育
出处:http://www.cnblogs.com/jerehedu/ 
版权声明:本文版权归烟台杰瑞教育科技有限公司和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

技术咨询:

时间: 2024-12-13 23:43:02

ios开发中的C语言学习—— 结构体简介的相关文章

[iOS]如何在iOS开发中切换显示语言实现国际化

1.在Project设置,添加中英两种语言: 2.新建Localizable.strings文件,作为多语言对应的词典,存储多种语言,点击右侧Localization,勾选中英: 3.添加一个字段, 在English中,添加:"SUBMIT_BTN_TITLE" = "Go"; 在Chinese中,添加:"SUBMIT_BTN_TITLE" = "开始"; 4.一个工具类GDLocalizableController,用来切换

C语言学习--结构体

结构体定义三种方式: 1 #include<stdio.h> 2 //第一种定义方法 3 struct point { 4 int x; 5 int y; 6 }; 7 struct point p1,p2; 8 9 //第二种定义方法 10 struct { 11 int x; 12 int y; 13 } p1,p2; 14 15 //第三种定义方法 16 struct { 17 int x; 18 int y; 19 } p1,p2; 这三种方法,对于第一和第三种,都声明了结构point

[iOS]怎样在iOS开发中切换显示语言实现国际化

1.在Project设置,加入中英两种语言: 2.新建Localizable.strings文件,作为多语言相应的词典,存储多种语言,点击右側Localization,勾选中英: 3.加入一个字段, 在English中,加入:"SUBMIT_BTN_TITLE" = "Go"; 在Chinese中,加入:"SUBMIT_BTN_TITLE" = "開始"; 4.一个工具类GDLocalizableController.用来切换

iOS开发中UIDatePicker控件的使用方法简介

iOS上的选择时间日期的控件是这样的,左边是时间和日期混合,右边是单纯的日期模式. 您可以选择自己需要的模式,Time, Date,Date and Time  , Count Down Timer四种模式. 本篇文章简单介绍下PickerDate控件的使用1.新建一个Singe View Application,命名为DatePickDemo,其他设置如图 2.放置控件打开ViewController.xib,拖拽一个DatePicker控件放到界面上,再拖拽一个Button控件放到界面上,双

在IOS开发中,项目的目录结构如何搭建?

网上有很多关于IOS开发的学习资料.然而却很少有关于设计一个项目时,如何设计其目录结构?这对于自学IOS的程序猿们,无疑有诸多不利.接下来,我就简单的谈下真正在公司中,项目的目录结构如何搭建: 以上为第一种,先按照功能模块进行划分,然后遵循MVC设计模式,分别设置model,view,control子文件夹.对于非项目模块类,以及一些自己写的一些分类,第三方框架等等,存储在other中,如上图所示. 至于另外一种方案,则是先以MVC进行划分,然后针对于model,view,control,进行子

ios学习笔记之block在ios开发中的应用

一.什么是Blocks      Block是一个C级别的语法以及运行时的一个特性,和标准C中的函数(函数指针)类似,但是其运行需要编译器和运行时支持,从ios4.0开始就很好的支持Block. 二.在ios开发中,什么情况下使用Block      Block除了能够定义参数列表.返回类型外,还能够获取被定义时的词法范围内的状态(比如局部变量),并且在一定条件下(比如使用__block变量)能够修改这些状态.此外,这些可修改的状态在相同词法范围内的多个block之间是共享的,即便出了该词法范围

ios开发中的4种数据持久化方式【二、数据库 SQLite3、Core Data 的运用】

               在上文,我们介绍了ios开发中的其中2种数据持久化方式:属性列表.归档解档.本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运用: 在本节,将通过对4个文本框内容的创建.修改,退出后台,再重新回到后台,来认识这两种持久化数据的方式.效果图如下[图1]: [图1 GUI界面效果图] [本次开发环境: Xcode:7.2     iOS Simulator:iphone6S plus   By:啊左]     一.数据库SQL

ios 开发中 动态库 与静态库的区别

使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库,多个应用程序共享内存中得同一份库文件,节省资源 3使用动态库,可以不重新编译连接可执行程序的前提下,更新动态库文件达到更新应用程序的目的. 从1可以得出,将整个应用程序分模块,团队合作,进行分工,影响比较小. 等其他好处, 从2可以看出,其实动态库应该叫共享库,那么从这个意义上来说,苹果禁止iOS开

黑 马 程 序 员_视频学习总结&lt;C语言&gt;----05 结构体

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ---------------------- 一.什么是结构体 在实际应用中,我们通常需要由不同类型的数据来构成一个整体,比如学生这个整体可以由姓名.年龄.身高等数据构成,这些数据都具有不同的类型,姓名可以是字符串类型,年龄可以是整型,身高可以是浮点型.为此,C语言专门提供了一种构造类型来解决上述问题,这就是结构体,它允许内部的元素是不同类型的. 二.结构体的定义 结构体内部的元素,也就是