CPP 基础篇5-结构体

230 篇文章 7 订阅
订阅专栏

 

#include <iostream>

using namespace std;

//1 创建学生数据类型:学生包括 姓名 年龄 分数
//自定义数据类型 一些类型集合组成的一个类型
//语法  struct 类型名称 {成员列表}
struct Student {
    //成员列表
    string name;
    int age;
    double score;
};
//2 通过学生类型创建具体学生
//2.1 struct Student stu;
//2.2 struct Student stu2={name:""}
//2.3 在定义结构体的时候顺便创建结构体变量

//3 struct 关键字创建的时候可以省略  定义的时候不可以省略

int main() {
    //2 通过学生类型创建具体学生
//2.1 struct Student stu;
//    struct Student stu1;
    Student stu1;//省略 同上
    stu1.name = "张三";
    stu1.age = 18;
    stu1.score = 100;
    cout << "姓名:" << stu1.name << " 年龄:" << stu1.age << " 分数:" << stu1.score << endl;
//2.2 struct Student stu2={name:""}
//    struct Student stu2 = {
//            name:"李四",
//            age:20,
//            score:99
//    };
//    上面的省略写法如下
    struct Student stu2 = {
            "李四",
            20,
            99
    };
    cout << "姓名:" << stu2.name << " 年龄:" << stu2.age << " 分数:" << stu2.score << endl;

//2.3 在定义结构体的时候顺便创建结构体变量
    struct StudentDemo {
        string name;
        int age;
        double score;
    } stu3;//在定义结构体的时候顺便创建结构体变量

    stu3.name = "王五";
    stu3.age = 21;
    stu3.score = 81;
    cout << "姓名:" << stu3.name << " 年龄:" << stu3.age << " 分数:" << stu3.score << endl;
    return 0;
}
姓名:张三 年龄:18 分数:100
姓名:李四 年龄:20 分数:99
姓名:王五 年龄:21 分数:81

总结:

1 定义结构体时的关键字是struct,不可以省略

2 创建结构体变量时,关键字struct可以省略

3 结构体变量利用操作符 "." 访问成员

 

#include <iostream>

using namespace std;

struct Student {
    string name;
};

int main() {
    //结构体数组
//    struct Student stu[3] = {
//            Student{"hello1"},
//            Student{"hello2"},
//            Student{"hello3"},
//    };
//省略写法如下
    struct Student stu[3] = {
            {"hello1"},
            {"hello2"},
            {"hello3"},
    };
    cout << "修改前的姓名:" << stu[2].name << endl;
    stu[2].name = "xiugai";
    cout << "修改后的姓名:" << stu[2].name << endl;
    for (int i = 0; i < 3; i++) {
        cout << "姓名:" << stu[i].name << endl;
    }
    return 0;
}

修改前的姓名:hello3
修改后的姓名:xiugai
姓名:hello1
姓名:hello2
姓名:xiugai

 

#include <iostream>

using namespace std;
//结构体指针
struct Student {
    string name;
    int age;
    int score;
};

int main() {
    //创建学生结构体
    Student stu = {"张三", 31, 100};
    //通过指针指向结构体变量
//    struct Student *p = &stu;
//省略写法如下
    Student *p = &stu;
    //通过指针访问结构体变量中的数据
    cout << p->name << " " << p->age << " " << p->score << endl;
    return 0;
}

总结:结构体指针可以通过->操作符 来访问结构体中的成员

#include <iostream>

using namespace std;

struct Student {
    int id;
    string name;
    int age;
};


struct Teacher {
    int id;
    string name;
    int age;
    struct Student stu;
};

int main() {
    Teacher t;
    t.id = 1;
    t.age = 55;
    t.name = "力王";

    Student stu = {101, "王五", 19};
    t.stu = stu;

    cout << t.name << "老师的学生是" << t.stu.name << endl;

    return 0;
}
力王老师的学生是王五

 

 

#include <iostream>

using namespace std;
struct Student {
    string name;
};

void printInfo(struct Student s) {
    cout << "printInfo,姓名:" << s.name << endl;
}

void printInfo2(struct Student *p) {
    cout << "printInfo2,姓名:p->name:" << p->name << endl;
    cout << "printInfo2,姓名:(*p).name:" << (*p).name << endl;
}

int main() {
    Student s = {"张三"};
    printInfo(s);
    printInfo2(&s);
    return 0;
}
printInfo,姓名:张三
printInfo2,姓名:p->name:张三
printInfo2,姓名:(*p).name:张三

 

#include <iostream>

using namespace std;
struct Student {
    string name;
};

//将函数的形参改为指针,可以减少内存空间,而且不会复制性的副本出来
void printInfo(const struct Student *const stu) {
//    stu->name = "aa";//编译报错 有const修饰
    cout << stu->name << endl;
}

int main() {
    struct Student s = {"张三"};
    printInfo(&s);
    return 0;
}

 

#include <iostream>

using namespace std;

struct Student {
    string name;
    int score;
};
struct Teacher {
    string name;
    struct Student students[5];
};


void allocateSpace(Teacher pTeacher[], int len) {
//给老师开始赋值
    string nameSeed = "ABCDE";
    for (int i = 0; i < len; i++) {
        pTeacher[i].name = "Teacher_";
        pTeacher[i].name += nameSeed[i];
        //通过循环给每名老师所带的学生赋值
        for (int j = 0; j < 5; j++) {
            int randScore = rand() % 61 + 40;
            pTeacher[i].students[j] = {"学生", randScore};
            pTeacher[i].students[j].name += nameSeed[j];
        }
    }
}

void printInfo(Teacher ts[], int len) {
    for (int i = 0; i < len; i++) {
        cout << "老师姓名:" << ts[i].name << endl;
        for (int j = 0; j < 5; j++) {
            cout << "\t学生姓名:" << ts[i].students[j].name << " 分数:" << ts[i].students[j].score << endl;
        }
    }
}

int main() {
    //随机数终止
    srand(time(NULL));
    struct Teacher teachers[3];

    int len = sizeof(teachers) / sizeof(teachers[0]);
    allocateSpace(teachers, len);
    printInfo(teachers, len);
    return 0;
}
老师姓名:Teacher_A
        学生姓名:学生A 分数:92
        学生姓名:学生B 分数:90
        学生姓名:学生C 分数:82
        学生姓名:学生D 分数:97
        学生姓名:学生E 分数:64
老师姓名:Teacher_B
        学生姓名:学生A 分数:44
        学生姓名:学生B 分数:91
        学生姓名:学生C 分数:95
        学生姓名:学生D 分数:92
        学生姓名:学生E 分数:93
老师姓名:Teacher_C
        学生姓名:学生A 分数:49
        学生姓名:学生B 分数:53
        学生姓名:学生C 分数:91
        学生姓名:学生D 分数:42
        学生姓名:学生E 分数:54

 

#include <iostream>

using namespace std;

struct Hero {
    string name;
    int age;
    string sex;
};

void bubbleSort(struct Hero h[], int len) {
    for (int i = 0; i < len - 1; i++) {
        for (int j = i + 1; j < len; j++) {
            if (h[i].age > h[j].age) {
                struct Hero temp = h[i];
                h[i] = h[j];
                h[j] = temp;
            }
        }
    }
}

void printHero(struct Hero hArr[], int len) {
    for (int i = 0; i < len; i++) {
        cout << "姓名:" << hArr[i].name << " 年龄:" << hArr[i].age << " 性别:" << hArr[i].sex << endl;
    }
}

int main() {
    struct Hero hArr[5] = {
            {"刘备", 23, "男"},
            {"关羽", 22, "男"},
            {"赵云", 20, "男"},
            {"貂蝉", 21, "男"},
            {"貂蝉", 19, "女"},
    };
    int len = sizeof(hArr) / sizeof(hArr[0]);
    printHero(hArr, len);
    cout << endl;
    bubbleSort(hArr, len);
    printHero(hArr, len);
    return 0;
}
姓名:刘备 年龄:23 性别:男
姓名:关羽 年龄:22 性别:男
姓名:赵云 年龄:20 性别:男
姓名:貂蝉 年龄:21 性别:男
姓名:貂蝉 年龄:19 性别:女

姓名:貂蝉 年龄:19 性别:女
姓名:赵云 年龄:20 性别:男
姓名:貂蝉 年龄:21 性别:男
姓名:关羽 年龄:22 性别:男
姓名:刘备 年龄:23 性别:男

C++基础】—— 基本语法(数组、函数、指针、结构体等使用语法和注意事项详解)
2401_82458959的博客
07-25 1312
在本文章中,主要是对C++基础语法进行回顾学习,回顾学习C++的基本语法规则、数据类型、控制结构以及面向对象编程的基本思想。
CPP结构体构造函数初始化附图
weixin_43769045的博客
12-10 1948
// Construction.cpp : 定义控制台应用程序的入口点。 //vs2015 //a)结构体有无构造函数如不初始化,其属性的值都是cccc. #include “stdafx.h” struct SDate { int nYear; int nMonth; int nDay; int * day; SDate() { nYear = 0;nMonth = 0;nDay = 0;// ...
cpp结构体
songbz1022的博客
01-08 286
cpp自学结构体笔记
CPP入门09:结构体
最新发布
Heisenburg_JauZ的博客
07-22 495
语法:struct 结构体{结构体成员列表};使用:使用结构体创建变量的方式有三种struct 结构体名 变量名struct 结构体名 变量名 = { 成员1值 ,成员2值... ... }创建结构体时顺便创建变量//创建一个名为student的结构体int age;int score;//结构体变量创建方式一//struct 可以省略:student stu1;stu1.name = "张三";
cpp中的结构
liguandong
03-07 622
虽然数组可以存储多个元素,但是所有元素类型必须相同,也就是说,一个数组可以存储20个int,另一个数组可以存储10个float,但同一个数组不能在一个元素中存储int,在另一些元素中存储float。cpp中的结构可以满足要求,结构是一种比数组更灵活的数据格式,因为同一个结构可以存储多种类型的数据。结构也是cpp OOP类的基石。结构是用户定义的类型,而结构声明定义了这种类型的数据属性,定义了类型后,便可以创建这种类型的变量,因此创建结构包括两步,首先,定义结构描述,它描述并标记了能够存储在数据中的各种数据类
cpp极简入门——结构体_(7)
andy dennis的博客
09-08 985
前言 我们知道,数组的所有元素只能是相同元素。但是这又有一些限制,比如一个人,他有年龄,是int类型,他有名字,是字符串类型,而这些信息都是这个人的信息,存为一项比较合理,而数组无法满足我们的需求。因此我们引入了结构体的概念。 代码 成绩排序 假设有一个班,班上有三个同学,小明,小红, 小张,他们三科成绩分别为 语文 数学 英语 小明 85 99 92 小红 92 94 97 小张 90
cpp代码-C和C++的不同-4-结构体函数不同
07-14
文章将详细探讨C和C++在处理结构体和函数方面的差异,通过分析`main.cpp`中的代码示例来帮助理解。 首先,C语言中的结构体是一种复合数据类型,它允许我们把多个不同类型的数据项组合成一个单一的实体。在C++中...
C++程序设计-结构体数组初始化详解
"这内容来自《C++程序设计》一书,由谭浩强编著,讲述了C++语言的发展历程以及C语言的主要特点,特别关注了结构体数组的初始化方法。" 在C++编程中,结构体(struct)是一种自定义数据类型,允许我们将不同类型的...
计算机软件-编程源码-VC6从入门到精通-基础.zip
05-24
《VC6从入门到精通-基础》是一个针对初学者设计的编程教程,主要涵盖了Microsoft Visual C++ 6.0(简称VC6)的基本使用和C++编程基础知识。本教程旨在帮助初学者快速掌握C++编程语言,并通过VC6这个经典开发环境...
cppTest-4.0:结构体
炜X影的专栏
12-29 663
/** *cppTest-4.0:结构体 * *c++比c的结构增强了,多了函数成员! *author 炜sama */ #include #include #define TIMES 12800000 struct time{ int hours; int minutes; int seconds; };//分号不能漏!!! void update(struct time *t)
6.C++结构体
菜鸟要爱学习
05-31 613
学习目标: 1.结构体的基本语法 2.结构体数组 3.结构体指针 结构体嵌套 结构体做函数参数 学习内容: 提示:这里可以添加要学的内容 例如: 搭建 Java 开发环境 掌握 Java 基本语法 掌握条件语句 掌握循环语句 学习时间: 提示:这里可以添加计划学习的时间 例如: 周一至周五晚上 7 点—晚上9点 周六上午 9 点-上午 11 点 周日下午 3 点-下午 6 点 学习产出: 提示:这里统计学习计划的总量 例如: 技术笔记 2 遍 CSDN 技术博客 3 习的
C++基础——结构体
热门推荐
KevinJune的博客
02-01 1万+
1 结构体基本概念 结构体属于用户自定义的数据类型,允许用户存储不同的数据类型 2 结构体定义和使用 语法:struct 结构体名 { 结构体成员列表 }; 通过结构体创建变量的方式有三种: ○struct 结构体名 变量名 ○struct 结构体名 变量名 = { 成员1值, 成员2值...} ○定义结构体时顺便创建变量 #include <iostream> using namespace std; #include<string> //1、创建学生..
cpp5.1
rocvfx的博客
11-08 431
5.1 #include int main() { using namespace std; int i; for (i = 0; i < 5; i++) cout << "C++ knows loops.\n"; cout << "C++ knows when to stop.\n"; system("pause"); return 0; }
struct在cpp中使用
m0_73412753的博客
02-05 403
struct使用
c++复习3
QIAN_HUAI
11-23 117
this指针来源: 对象不含有,对象调动成员函数,进入到成员函数体时会有this指针; 成员函数调动完毕,this指针释放; 传递this指针:1:扫描数据成元;2:扫描成员函数的声明;3:改写成员函数形参列表,类名*const this; 4:对函数体里的数据成员加上this指针; this指针不是push压进去的;同类型的对象调动方法区分 this指针;inline函数会把函数执行体直接拷贝,不存在现场保护和恢复,不需要调用,空间变大; inline函数有循环,递归,不能使用inline..
Cpp: struct constructor
weixin_30856725的博客
06-11 213
Reference: 1. http://www.dev-hq.net/c++/11--constructors-and-destructors 转载于:https://www.cnblogs.com/wordchao/p/11001531.html
如何定义结构体数组指针_浅谈Cpp中的指针与结构体
weixin_39804631的博客
01-27 697
1.const char*str不能修改内存可以来接受字符串字面常量substr的字符串实现机制,利用const char*str可直接输入初始化值让我们来举个例子#define _CRT_SECURE_NO_WARNINGS//因为一些老的.c文件使用了strcpy,scanf等不安全的函数必须在表头#include#include//strcopy实现机制using namespac...
cpp(5)引用
哲学天空的博客
04-09 811
引用://引用就是别名,下面mum是num的别名,这两个变量是一个变量,只不过名字不同而已#include&lt;iostream&gt;using namespace std;int main(){ int num; int &amp;mum=num;   //定义num的别名mum num=999; cout&lt;&lt;"mum:"&lt;&lt;mum&lt;&lt;endl; cout...
写文章

热门文章

  • 17 CPP面向对象编程 33569
  • Linux下的压缩解压缩命令详解 27336
  • keepalived的vip无法ping通排查过程 24618
  • 利用XShell上传、下载文件(使用sz与rz命令),超实用 17563
  • centos7安装keepalived记录最新版踩坑 13376

分类专栏

  • 大模型 17篇
  • 后端 75篇
  • 其它 27篇
  • 区块链 3篇
  • Nginx 24篇
  • 数据库 231篇
  • Golang 25篇
  • 开发工具 13篇
  • c++ 230篇
  • rpc 21篇
  • 存储 77篇
  • Java 19篇
  • RDMA 2篇
  • rust 44篇
  • webassembly 1篇
  • 设计模式 3篇
  • SPDK 8篇
  • Linux 222篇
  • PHP 64篇
  • Redis 39篇
  • Python 4篇
  • Docker 18篇
  • 前端 17篇

最新评论

  • graphrag-ui安装使用

    3333333_: 遇到过,忘记怎么解决了。可以尝试下1:设置环境变量PYTHONUTF8=1 。2:如果做了prompt优化,就把prompt还原。3:换个别的文本尝试下

  • graphrag-ui安装使用

    褴褛。: 博主您好,构建索引时总是编码报错怎么解决啊?UnicodeEncodeError: 'gbk' codec can't encode character '\U0001f680' in position 0: illegal multibyte sequence

  • graphrag-ui安装使用

    3333333_: 你就用这个提示里面的命令安装,报版本冲突,不用管,

  • graphrag-ui安装使用

    xuegaoxuegao: 私信你了

  • graphrag-ui安装使用

    xuegaoxuegao: 加个好友交流交流

大家在看

  • 2024新手攻略:项目管理工具+PMP备考经验不容错过!
  • scala的抽象类
  • Maven引入依赖但是无法使用
  • java计算机毕业设计短信平台管理系统(开题+程序+论文)
  • Linux——shell 编程基础

最新文章

  • 搭建GraphRAG-Local-UI练习
  • graphrag-ui安装使用
  • Linux Ubuntu设置ollama保存模型的路径和设置监听端口
2024年18篇
2023年580篇
2022年239篇
2021年1篇
2020年125篇
2019年24篇
2018年22篇
2016年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家玻璃钢果篮景观雕塑报价单上海商场节庆美陈雕塑摆件定制贵州艺术雕塑玻璃钢辽宁玻璃钢人物雕塑定制玻璃钢浮雕抽象不锈钢雕塑定制甘肃卡通玻璃钢雕塑制作江西水果玻璃钢雕塑广东佛像玻璃钢雕塑哪家便宜邳州元旦商场美陈湘潭玻璃钢马雕塑海口商场美陈济源不锈钢镂空校园玻璃钢雕塑四川玻璃钢海豚雕塑艺术造型加工梅州玻璃钢动物雕塑包括哪些合肥仿铜玻璃钢雕塑定做玻璃钢李白醉酒雕塑图片天津玻璃钢桃子雕塑深圳玻璃钢卡通雕塑规格玻璃钢马雕塑价格玻璃钢室外不锈钢雕塑小品报价南宁水果玻璃钢雕塑玻璃钢汽车道具雕塑简介福建泉州玻璃钢雕塑厂家恩施玻璃钢雕塑设计主题商场美陈市场安达玻璃钢雕塑动漫玻璃钢雕塑定制郴州雕塑玻璃钢景观玻璃钢雕塑加工厂睢宁玻璃钢花盆花器香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化