IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 结构体相关知识1 -> 正文阅读

[C++知识库]结构体相关知识1

目前已学的数据类型:数组(1、所有数据的类型必须一致? ?2、访问数组的成员必须通过下标)

学籍管理系统:学生(姓名、学号、性别、年龄、成绩...)

飞机票订票系统:机票(订票时间、班号、起点、终点...)

酒店订票系统:房间 (预定时间、房号、位置...)

C语言的内置类型:bool、char、short 、int、long、long long、float?、double、long double

1、C语言为什么需要结构题?

是为了描述复杂个体,只用基础的内置类型不能完整的表述。

2、如何去定义结构题?

结构体定义好之后,它就和内置类型没有区分

struct +结构体名//struct在C语言中不能丢,C++可以

{
? ? ? 成员列表;

};

struct Student
{
	char name[20];//名字、容纳10个汉字
	int id;//学号
	char sex;//性别  1男0女
	int age;//年龄
	int score;//总成绩
};
int main()
{
struct Student stu_arr[10];
    struct Student stu_brr[10] = { "caocoa",12345,1,30,88,"liubei",23456,1,35,85 };//只初始化了前两个结构体
    int len = sizeof(stu_brr) / sizeof(stu_brr[0]);//求长度
    for (int i = 0; i < len; i++)
    {
        printf("%s", stu_brr[i].name);
        printf("%d", stu_brr[i].id);
        if (stu_brr[i].sex==0)
        {
            printf("男");
        }
        else
        {
            printf("女");
        }
        printf("%d", stu_brr[i].id);
        printf("%d\n", stu_brr[i].score);
    }
}

struct Student stu1={ "caocao",12345,1,30,88 };//给了结构体初始值,对应姓名、学号、性别、年龄、总成绩
struct Student stu2 = { "caocao" };//只赋值一部分,其他部分默认为0?

struct Student stu3;//不初始化都是随机值
struct Student* stup = &stu1;//stu1的地址
struct Student* stup;//指向随机值

struct A
{
? ? int a;
? ? int b;
};
struct B
{
? ? int a;//数据域
? ? struct A b;//嵌入结构体
? ? struct B* b;//自嵌时只能是指针变量,因为知道空间大小? ? 指针域
};

3、如何使用结构体?

3.1结构体普通变量怎么访问其成员

C语言规定,结构体的普通成员可以用过 ‘ .? ’ 来访问

struct Student
{
    char name[20];//名字、容纳10个汉字
    int id;//学号
    char sex;//性别  1男0女
    int age;//年龄
    int score;//总成绩
};
int main()
{
    struct Student stu1 = { "caocoa",12345,1,30,88 };
    struct Student stu2 = { "liubei", 23456,1,35,85 };
    struct Student stu3 = { "sunquan", 23457,1,18,87};
    //打印 struct Student stu1的信息
    printf("%s ", stu1.name);
    printf("%d ", stu1.id);
    printf("%d ", stu1.sex);
    printf("%d ", stu1.age);
    printf("%d\n", stu1.score);
    stu1.id = 678989;//修改stu1的学号
    //stu1.id = "caopi";结构体成员是字符串,不能直接用=修改
    strcpy_s(stu1.name, "caopi");//修改名字,用 strcpy函数
    printf("%s ", stu1.name);
    printf("%d ", stu1.id);
    printf("%d ", stu1.sex);
    printf("%d ", stu1.age);
    printf("%d\n", stu1.score);
}

3.2结构体指针变量怎么访问其成员:可以通过->方式访问

系统简化:(*p).name==p->name

struct Student
{
    char name[20];//名字、容纳10个汉字
    int id;//学号
    char sex;//性别  1男0女
    int age;//年龄
    int score;//总成绩
};
int main()
{
    struct Student stu1 = { "caocoa",12345,1,30,88 };
    struct Student stu2 = { "liubei", 23456,1,35,85 };
    struct Student stu3 = { "sunquan", 23457,1,18,87};
    struct Student* p = &stu3;//指针指向stu3地址
    (*p).id = 76543;//利用指针修改stu3的学号
    p->sex = 0;//修改性别
    strcpy_s((*p).name, "sunjian");
     //(*p).name==p->name
    //printf("%s ", (*p).name);
    printf("%s ", p->name);
    printf("%d ", p->id);
    printf("%d ", p->sex);
    printf("%d ", p->age);
    printf("%d\n", p->score);
}

4、typedef的使用:给一个类型取一个别别名

? ? ?typedef+类型+外号;//

? ? ?typedef unsigned long long int uint64;//将unsigned long long int取别名uint64
? ? ?typedef ?int * Pint;? ? ? ?//将int *取别名为Pint
? ? ?typedef ? int ARR[10];? ?//将int[10]类型的数组取别名叫ARR

? ?? typedef int AAA;//AAA是int类型

? ? ?typedef AAA BBB;//给别名取别名,BBB也是int类型
? ? ?#define PI 3.14;? ? ? ? ? //定义宏PI代表?3.14

typedef unsigned long long int uint64;//将unsigned long long int取别名uint64
typedef  int * Pint;
typedef int ARR[10];//将int[10]类型的数组取别名叫ARR
#define PI 3.14;//定义宏
int mian()
{
    //unsigned long long int a;
    uint64 a;
    uint64 b;
    ARR brr;
    printf("%d\n",sezeof(brr));
}

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-04 13:12:48  更:2021-12-04 13:14:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:34:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码