iOS开发学习之C语言---C06 结构体-1

//

//  main.m

//  C06 结构体-1

//

//  Created by 康亮亮 on 15/10/14.

//  Copyright (c) 2015 Darling.com. All rights reserved.

//


#import <Foundation/Foundation.h>


// 声明

// 声明一个结构体类型:由两个整型类型组成,一个叫x表示x轴坐标,另一个叫y,表示y轴坐标。

struct zuoBiao {

    // 成员变量

    int x; // 第一个成员变量,变量的类型是整形,变量的名字是x

    int y; // 第二个成员变量,变量的类型是整形,变量的名字是y

    

};





#pragma mark 匿名结构体

// 匿名结构体:没有名字的结构体。在结构体名的位置,只有一个空格

struct {

    float a;

    float b;

} // 坑:不能有分号!


// 因为匿名结构体没有结构体名,所以在main函数或其他自定义函数中无法获取到这种类型的结构体,如果要使用,必须在声明完成后 马上创建出这种类型的变量

noName = {12.34, 23.45}, //

noName2 = {23.34, 45.34};



// 声明一个结构体类型,名字叫:student,成员变量有:name,age,gender

struct student {

    char name[20];

    int age;

    char gender;

};






#pragma mark typedef类型定义

// 一般我们可以使用typedef将较长的结构体类型修饰符,替换为另一个名字 typedef <#existing#> <#new#>;

typedef struct student student;


// typedef的另一种用法:在声明结构体类型的同时,找一个新名字来代替

typedef struct teacher{

    char name[20];

    int age;

} Teacher; // 建议使用一种作为自己风格





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

    

    

#pragma mark 结构体声明

    // 什么是结构体?

    /*

     * 1、结构体是一种构造类型,由其他基本数据类型组合成的一种新类型。与数组的区别是:构成结构体的基本数据类型可以不相同,数组必须是同类型的数据构成。

     * 2、结构体必须先声明,声明这个结构体由哪些数据类型构成的,相当于基本数据类型的“int\char\double”之类的类型说明。

     声明完成后,就在文件中创造出了这种新的数据类型,就可以使用这种新类型定义变量来保存数据了。

     */

    

    

    

    

#pragma mark 定义结构体类型的变量

    /*

     // 定义 一个“zuoBiao”类型的结构体变量。

     // struct zuoBiao,使用struct关键字+结构体名(面试这么说),共同组成了变量的 类型修饰符.

     // 结构体变量赋值方法和数组赋值方法一样,用"{}"将成员变量的值包裹起来,使用","分隔开各个值。

     struct zuoBiao point1 = {12,34}; // 其实是使用struct关键字+结构体类型名+结构体名

     

     // 访问 结构体变量的值: point1.x 使用 结构体变量名 + '.' + "成员变量名"的方式访问

     int b = point1.x;

     int c = point1.y;

     printf("b = %d , point1.x = %d\n", b, point1.x);

     printf("c = %d , point1.y = %d\n", c, point1.y);

     

     // 修改 point1x99y88: 先访问到对应的成员变量,然后再修改值

     point1.x = 99;

     point1.y = 88;

     printf("point1.x = %d, point1.y = %d\n", point1.x, point1.y);

     

     struct zuoBiao point2 = {45, 56};

     printf("point2.x = %d, point2.y = %d\n",point2.x, point2.y);

     */

    

    

    /*

     // 定义一个zuoBiao类型的结构体变量,point3,成员变量的值和point2一样

     // 结构体变量之间可以整体赋值,但是数组不行!!!

     struct zuoBiao point3 = point2; // 结构体变量之间可以整体赋值,但是数组不行!!!

     printf("point3.x = %d, point3.y = %d\n",point3.x, point3.y);

     

     // 输出匿名结构体变量的成员变量

     printf("%f, %f\n", noName.a, noName.b);

     printf("%f, %f\n", noName2.a, noName2.b);

     */

    

    

    

    // 定义一个student结构体变量

    struct student stu1 = {"laowang", 23, 'm'};

    // 打印stu1的年龄

    printf("%d\n", stu1.age);

    // 修改stu1的年龄

    stu1.age = 32;

    printf("%d\n", stu1.age);

    

    // 修改nameshuKui

    // 因为字符串在C语言中使用的是字符数组类型保存的,数组不能整体赋值,所以使用普通的修改成员变量方法在这里无效,需要使用字符串拷贝函数,达到修改的目的。

    //    stu1.name = "shuKui"; //不行

    strcpy(stu1.name, "shuKui"); // 活学活用

    printf("%s\n",stu1.name);

    

    

    student stu2 = {"xiaoli", 22, 'm'};

    printf("%s\n", stu2.name);

    

    

    

    

    

    

    

    

    return 0;

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值