结构体定义,自定义类型

本文介绍了C语言中的结构体定义及其用途,包括如何定义结构体、使用typedef给结构体类型重命名,以及如何创建结构体变量并访问其成员。示例中展示了学生、点和矩形的结构体定义,并通过比较运算符展示了结构体变量的赋值和比较操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//

//  main.m

//  LessonStruct

//

//  Created by lanouhn on 14-7-24.

//  Copyright (c) 2014 vaercly@163.com 陈聪雷. All rights reserved.

//


#import <Foundation/Foundation.h>

#import "Sructs.h"

//导入自定义的头文件时用"", 导入系统的头文件时用<>

/**

 *  结构体是一种自定义的数据类型, 也是用来存储多个数据的容器, 只不过结构体要比数组灵活, 它可以存储不同的类型的相数据

 */

//结构体的定义

//struct + 结构体名字{大括号中填写结构体成员, 多个结构体成员之间通过分号间隔} + ; (分号必不可少)

struct student {

    //结构体成员

    int number; //存储学号

    char sex;   //存储性别

};//分号结构体定义的结束标志, 必不可少    float x;//存储横坐标

float y;//存储纵坐标

//typedef 第一种格式, 先定义结构体类型, 然后再typedef

typedef struct student Student;//给结构体类型struct student重新定义了一个名字Student


//typedef 第二种格式, 定义结构体的同时, typedef

typedef struct student1 {

    //结构体成员

    int number; //存储学号

    char sex;   //存储性别

}Student1;



//定义一个点结构体

struct point {

    //结构体成员

    float x;//存储横坐标

    float y;//存储纵坐标

};

typedef struct point Poi;


typedef struct point1 {

    float x;//存储横坐标

    float y;//存储纵坐标

}Point1;


//定义一个矩形结构体

struct rectangle {

    //结构体成员

    float length;//存储长

    float width;//存储宽

};

typedef struct rectangle Rectangle;



//typedef 类型中定义(给已有的类型重新起一个名字), 新名字和原类型具有同样的功能

typedef int Integer;



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

{

    //定义一个学生结构体变量, 和定义int, float, 插入类型数据一样, 只不过把类型换成结构体类型而已

    //结构体类型 = struct 关键字 + 结构体名字

    Integer a = 0;

    //struct student 学生结构体类型

    //stu 学生结构体名字

    Student stu = {9527, 'M'};

    Student stu1 = {10086, 'F'};

    Poi poi = {1.2, 2.4};

    Rectangle rec = {13, 14};

    //结构体变量访问结构体成员的方式, 通过结构体变量.结构体成员

    printf("%d %c\n", stu.number, stu.sex);

    printf("%d %c\n", stu1.number, stu1.sex);

    printf("%f %f\n", poi.x, poi.y);

    printf("%f %f\n", rec.length, rec.width);

    stu.number = 100;

    printf("%d\n", stu.number);

    

    //定义一个学生结构体变量

    Stu xiaoGuang = {"xiaoGuang", 'F', 10, 12.3};

    printf("%s %c %d\n", xiaoGuang.name, xiaoGuang.sex, xiaoGuang.number);

    

    Stu xiaoMing = {0};

//    strcpy(xiaoMing.name, xiaoGuang.name);

//    xiaoMing.sex = xiaoGuang.sex;

//    xiaoMing.number = xiaoGuang.number;

    //结构体变量可以直接赋值

    xiaoMing = xiaoGuang;

    printf("%s %c %d\n", xiaoMing.name, xiaoMing.sex, xiaoMing.number);

    Stu xiaoHong = {"xiaoHong", 'F', 29, 45.6};

    Stu xiaoGang = {"xiaoGang", 'F', 18, 89.3};

    

    Stu temp = {0};

    temp = xiaoGuang.score > xiaoHong.score ? xiaoGuang : xiaoHong;

    temp = temp.score > xiaoGang.score ? temp : xiaoGang;

    printf("最高分数的学生为:%s\n", temp.name);

    

    temp = xiaoGuang.number < xiaoHong.number ? xiaoGuang : xiaoHong;

    temp = temp.number < xiaoGuang.number ? temp : xiaoGuang;

    printf("最小年龄的学生为:%s\n", temp.name);


    return 0;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值