博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第一讲:结构型与数组
阅读量:4144 次
发布时间:2019-05-25

本文共 1696 字,大约阅读时间需要 5 分钟。

  结构型是一种自定义数据类型,与基本数据类型如int的作用相同,用于定义变量。数组是一种数据结构,用于组织数据,也是一组变量,有整型数组,有某种结构型数组。类型是一类数据(或存储单元)的抽象,变量是具体的某类存储单元的标识。结构型变量与数组才有可比性。
    基本数据类型是一类数的抽象,如整型是整数的抽象,而结构型是一类对象的抽象,如表示学生的结构型。与整数相比,学生具有多种属性,如姓名、性别、出生日期、英语成绩等等。抽象学生的结构型可定义为:
struct Student
{
    char name[10];
    int sex; //1为男0为女
    int year;
    int month;
    int day;
    float grade;//英语成绩
};
    有了名为学生的结构型后,需存储两个学生的信息时,他们的信息可保存在两个相关的结构型变量中。语句struct Student zhang3;定义了一个结构型变量zhang3,实际上定义了6个变量:长度为10的字符型数组zhang3.name,整型变量zhang3.sex、zhang3.year、zhang3.month、zhang3.day,单精度变量zhang3.grade。
    定义一个数组变量也定义了多个变量,但这些变量的类型相同,而结构型变量的多个成员变量类型可以不同。
    使用结构型变量实际上就是使用其多个“普通”的成员变量,如下面程序所示。
#include <stdio.h>
struct Student
{
    char name[10];
    int sex; //1为男0为女
    int year;
    int month;
    int day;
    float grade;//英语成绩
};
#include <stdio.h>
int main()
{
    struct Student zhang3;
    printf("请输入张三的信息\n");
    scanf("%s", zhang3.name);
    scanf("%d", &zhang3.sex);
    scanf("%d%d%d", &zhang3.year, &zhang3.month, &zhang3.day);
    scanf("%f", &zhang3.grade);
    printf("张三的信息:\n");
    printf("姓名:%s\n", zhang3.name);
    printf("性别:%s\n", zhang3.sex==1 ? "男" : "女");
    printf("出生日期:%d年%d月%d日\n", zhang3.year, zhang3.month, zhang3.day);
    printf("英语成绩:%.1f\n", zhang3.grade);
    return 0;
}
    程序的执行情况如下:
请输入张三的信息
Zhang3 1 2000 1 1 93.9
张三的信息:
姓名:Zhang3
性别:男
出生日期:2000年1月1日
英语成绩:93.9
    可以定义结构型数组,如语句struct Student stu[2];就定义了一个名为stu的结构型数组,实际上也就是定义了两个名为stu[0]和stu[1]结构型变量,不过,每个结构型变量又包含了多个“普通”的成员变量,即对于结构型变量stu[0],应理解为多个“普通”的变量,如长度为10的字符型数组stu[0].name(下标操作符和成员操作符的优先级相同,左结合)……。
    也可以用间接引用的方式通过指针使用相关的存储单元。语句struct Student *pStu;就定义了一个结构型指针变量,通过赋值操作使其指向某个存储单元,如pStu=&zhang3;,则*pStu与zhang3标识了同一个存储单元,两者可以互换使用。通过指针变量使用结构型的成员变量需用(*pStu).name(间接引用操作符的优先级比成员操作符的低,故不能省略括号),但常用pStu->name的形式。
    结构型变量用于存储具有多个属性的对象,使用结构型变量就是使用其多个“普通”的成员变量。
    (练习结构型数组和结构型指针的用法)

转载地址:http://mcdti.baihongyu.com/

你可能感兴趣的文章
Mysql中下划线问题
查看>>
Xcode 11 报错,提示libstdc++.6 缺失,解决方案
查看>>
idea的安装以及简单使用
查看>>
Windows mysql 安装
查看>>
python循环语句与C语言的区别
查看>>
vue 项目中图片选择路径位置static 或 assets区别
查看>>
vue项目打包后无法运行报错空白页面
查看>>
Vue 解决部署到服务器后或者build之后Element UI图标不显示问题(404错误)
查看>>
element-ui全局自定义主题
查看>>
facebook库runtime.js
查看>>
vue2.* 中 使用socket.io
查看>>
openlayers安装引用
查看>>
js报错显示subString/subStr is not a function
查看>>
高德地图js API实现鼠标悬浮于点标记时弹出信息窗体显示详情,点击点标记放大地图操作
查看>>
初始化VUE项目报错
查看>>
vue项目使用安装sass
查看>>
HTTP和HttpServletRequest 要点
查看>>
在osg场景中使用GLSL语言——一个例子
查看>>
laravel 修改api返回默认的异常处理
查看>>
laravel事务
查看>>