09C++结构体

/*结构体属于用户自定义的数据类型, 允许用户存储不同的数据类型,

语法:struct  结构体名{结构体成员列表} ;*/
//struct 结构体名 变量名

#include <iostream>
#include <string>
using namespace std;
struct student
{ string name;
int age;int score;
};
int main()
{
struct student s1;
s1.name="张三";
s1.age=18;
s1.score=100;
cout<<"姓名:"<<s1.name<<" "<<"年龄:"<<s1.age<<" " <<"分数:"<<s1.score<<endl;
return 0;
}



//struct 结构体名 变量名={成员1值,成员2值...}

#include <iostream>
#include <string>
using namespace std;
struct student
{ string name;int age;int score;};
int main()
{
struct student s2={"张三",18,100 };
cout<<"姓名:"<<s2.name<<" "<<"年龄:"<<s2.age<<" " <<"分数:"<<s2.score<<endl;
return 0;
}



//定义结构体时顺便创建变量

#include <iostream>
#include <string>
using namespace std;
struct student
{ string name;int age;int score;};
struct student s3;
int main()
{
s3.name="张三";
s3.age=18;
s3.score=100;
cout<<"姓名:"<<s3.name<<" "<<"年龄:"<<s3.age<<" " <<"分数:"<<s3.score<<endl;
return 0;
}


//结构体数组

#include <iostream>
using namespace std;
struct student {string name;int age;int score;};
int main()
{
    //创建结构体数组,并给结构体数组的元素赋值 
    struct student s1[3]=
    {
        {"zhang",18,100},
        {"li",19,99},
        {"wang",20,98},
    };
    //遍历结构体数组
    for(int i=0;i<3;i++)
    {
        cout<<"姓名:"<<s1[i].name <<"年龄: "<<s1[i].age<<"分数:"<<s1[i].score<<endl; 
     } 
     return 0;
    
 } 


//结构体指针

#include <iostream>
#include <string>
using namespace std;
struct student {string name;int age;int score;};
int main()
{
struct student s={"zhang",18,100}; 
//通过指针指向结构体变量
student *p=&s;
//通过指针访问结构体变量中的数据
cout<<"姓名: "<<p->name<<"年龄:"<<p->age<<"分数:"<<p->score<<endl;
return 0; 


//结构体嵌套结构体

#include <iostream>
#include <string>
using namespace std;
struct student{string name;int age;};
struct teacher{string name;int age;struct student s;};
int main()
{
teacher t;
t.name="li";
t.age=43;
t.s.name="zhang";
t.s.age=18;
cout<<"姓名: "<<t.name<<"年龄:"<<t.age<<"学生姓名:"<<t.s.name<<"学生年龄:"<<t.s.age<<endl;
return 0; 


//结构体数组

#include <iostream>
#include <string>
using namespace std;
//结构体数组——定义结构体数组 
struct student{
    string name;
    int age;
    int score;
}; 
//创建结构体数组 
int main()
{
    struct student stuarray[3]={
        {
            "zhang",18,100
        },
        {
            "li",19,99
        },
        {
            "wang",20,98
        }
    };
//结构体数组中的元素赋值
stuarray[2].name="zhao";
stuarray[2].age=21;
stuarray[2].score=97;
//遍历结构体数组
for(int i=0;i<3;i++){
    cout<<"姓名: "<<stuarray[i].name
    <<"年龄: "<<stuarray[i].age
    <<"分数: "<<stuarray[i].score<<endl;

return 0;
 } 


//结构体指针

#include <iostream>
#include <string>
using namespace std; 
struct student{
    string name;
    int age;
    int score;
}; 
int main()
{
    struct student s={"zhang",18,100
    }; 
    struct student*p=&s;//通过指针指向结构体变量
    cout<<"姓名:"<<p->name<<" "<<"年龄:"<<p->age<<" "<<"分数:"<<p->score<<endl;
    return 0;
 } 


//结构体嵌套结构体

#include <iostream>
#include <string>
using namespace std; 
struct student{
    string name;
    int age;
    int score;
}; 
struct teacher{
    string name;
    int id;
    struct student stu;
};
int main()
{
    teacher t;
    t.id=10010;
    t.name="ye";
    t.stu.name="zou";
    t.stu.age=18;
    t.stu.score=100;
    cout<<"老师姓名:"<<t.name<<" "<<"老师id:"<<t.id<<" "
    <<"学生姓名:"<<t.stu.name<<" "<<"学生年龄:"<<t.stu.age<<" "
    <<"学生分数:"<<t.stu.score <<endl;
    return 0;
 } 


//结构体做函数参数

#include <iostream>
#include <string>
using namespace std;

struct student {
    string name;
    int age;
    int score;
};

// 值传递
void printstudent(student s) {
    cout << "子函数中姓名:" << s.name << " 年龄:" << s.age << " 分数:" << s.score << endl;
}

// 地址传递
void printstudent1(student* p) {
    cout << "子函数1中姓名:" << p->name << " 年龄:" << p->age << " 分数:" << p->score << endl;
}

int main() {
    student s;
    s.name = "zhang";
    s.age = 18;
    s.score = 100;

    // 调用值传递函数
    printstudent(s);

    // 调用地址传递函数
    printstudent1(&s);

    return 0;
}

#include <iostream>
#include <string>
using namespace std;

struct student {
    string name;
    int age;
    int score;
};

// 值传递
void printstudent(student s) {
    s.age=100;//值传递修饰形参,实参不会改变
    cout << "子函数中姓名:" << s.name << " 年龄:" << s.age << " 分数:" << s.score << endl;
}

// 地址传递
void printstudent1(student* p) {
    cout << "子函数1中姓名:" << p->name << " 年龄:" << p->age << " 分数:" << p->score << endl;
}

int main() {
    student s;
    s.name = "zhang";
    s.age = 18;
    s.score = 100;

    // 调用值传递函数
    printstudent(s);
    cout<<"年龄:"<<s.age<<endl;
    // 调用地址传递函数
    printstudent1(&s);

    return 0;
}

#include <iostream>
#include <string>
using namespace std;

struct student {
    string name;
    int age;
    int score;
};

// 值传递
void printstudent(student s) {
    
    cout << "子函数中姓名:" << s.name << " 年龄:" << s.age << " 分数:" << s.score << endl;
}

// 地址传递
void printstudent1(student* p) {
    p->age=28;
    cout << "子函数1中姓名:" << p->name << " 年龄:" << p->age << " 分数:" << p->score << endl;
}

int main() {
    student s;
    s.name = "zhang";
    s.age = 18;
    s.score = 100;

    // 调用值传递函数
    printstudent(s);
    
    // 调用地址传递函数
    printstudent1(&s);
    cout<<"年龄:"<<s.age<<endl;

    return 0;
}

//结构体const的使用 
#include <iostream>
#include <string>
using namespace std;
struct student {
    string name;
    int age;
    int score;
};
void printstudent(const student *s){//加入const之后,一旦有修改的操作就会报错,防止误操作 
    cout<<"姓名:"<<s->name<<" "<<"年龄:"<<s->age<<"分数:"<<s->score<<endl;
    }
int main() {
    struct student s={"zhang",18,100
    }; 
    printstudent(&s);
    
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/13275.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

软件测试之白盒测试(超详细总结)

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 白盒测试 白盒测试&#xff08;White Box Testing&#xff09;又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试只测试软件产品的内部结…

【入门篇】数字统计——多语言版

题目跳转&#xff1a;数字统计 题目解析&#xff1a; 这道题目要求统计在给定范围 [L, R] 内所有整数中数字 2 出现的次数。例如&#xff0c;在范围 [2, 22] 中&#xff0c;数字 2 分别在数 2、12、20、21、22 中出现的次数&#xff0c;最终出现了6次。 题目的输入为两个正…

C++初阶——list

一、什么是list list是一个可以在序列的任意位置进行插入和删除的容器&#xff0c;并且可以进行双向迭代。list的底层是一个双向链表&#xff0c;双向链表可以将它们包含的每个元素存储在不同且不相关的存储位置。通过将每个元素与前一个元素的链接和后一个元素的链接关联起来&…

FlinkSql读取kafka数据流的方法(scala)

我的scala版本为2.12 <scala.binary.version>2.12</scala.binary.version> 我的Flink版本为1.13.6 <flink.version>1.13.6</flink.version> FlinkSql读取kafka数据流需要如下依赖&#xff1a; <dependency><groupId>org.apache.flink&…

力扣 LeetCode 19. 删除链表的倒数第N个结点(Day2:链表)

解题思路&#xff1a; 快慢指针 class Solution {public ListNode removeNthFromEnd(ListNode head, int n) {ListNode dummy new ListNode(-1);dummy.next head;ListNode fast dummy;ListNode slow dummy;for (int i 0; i < n; i) {fast fast.next;}while (fast.ne…

提升法律文书处理效率的秘密武器:开源文档比对工具解析

本篇文章介绍了一款针对律师行业的免费开源文档比对工具&#xff0c;旨在解决法律文档的多版本比对难题。通过逐字、逐句精确比对、语义分析、批量处理等核心功能&#xff0c;该工具可高效识别文本差异&#xff0c;提升文书审查效率并降低错误风险。它支持多种文件格式&#xf…

linux命令详解,openssl+历史命令详解

openssl openssl是一个开源的加密工具包&#xff0c;提供了各种加密、解密、签名、验证等功能 openssl passwd -1 123password表示这个命令用于处理密码相关的操作&#xff0c;-1参数指定使用MD5加密算法对密码“123”进行加密处理。MD5是一种常用的哈希算法&#xff0c;它将…

轻松理解操作系统 - Linux的虚拟文件系统是如何简化我们的使用的?

在前面几期&#xff0c;我们不仅了解了 Linux文件系统 是如何在硬盘等储存介质上保存文件的&#xff1a; 什么是软硬链接 文件的“身份证” - inode 真正储存文件的地方 - 数据块 文件系统的心脏 - 超级块 以及了解了 Linux系统 中具体都有一些什么文件&#xff1a; Linu…

LeetCode【0019】删除链表的倒数第N个结点

本文目录 1 中文题目2 求解方法&#xff1a;虚拟头节点和快慢指针2.1 方法思路2.2 Python代码2.3 复杂度分析 3 题目总结 1 中文题目 给定一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例&#xff1a; 链表如上&#xff1a; 输入&a…

【JavaSE】多线程案例---阻塞队列

1. 阻塞队列 阻塞队列是一种特殊的队列&#xff0c;也遵守 " 先进先出 " 的原则。 阻塞队列是一种线程安全的数据结构&#xff0c;并且具有以下特性&#xff1a; 1. 当队列为满时&#xff0c;继续进行入队列操作就会阻塞&#xff0c;直到有其他线程从队列中取走元素…

SQL练习(2)

题源&#xff1a;牛客官网 选择题 假设创建新用户nkw&#xff0c;现在想对于任何IP的连接&#xff0c;仅拥有user数据库里面的select和insert权限&#xff0c;则列表语句中能够实现这一要求的语句是&#xff08;&#xff09; A grant select ,insert on *.* to nkw% B grant…

Hyper-v中ubuntu与windows文件共享

Hyper-v中ubuntu与windows文件共享 前言相关链接第一步--第一个链接第二步--第二个链接测试与验证 前言 关于Hyper-V的共享我搞了好久&#xff0c;网上的很多教程太过冗余&#xff0c;我直接采用最简单的办法吧 相关链接 Hyper-V中Ubuntu 同windows系统共享文件夹-百度经验 …

【TCP零窗口问题】

零窗口问题说明 零窗口问题(Zero Window Problem)是指在TCP连接中,当接收方的接收缓冲区已满时,无法接受新的数据。此时,接收方会向发送方发送一个窗口大小为0的TCP消息,告知其暂停发送数据,直到接收方释放出缓冲区空间。这种情况在高负载或接收方处理能力不足时比较常见…

Oracle OCP认证考试考点详解082系列19

题记&#xff1a; 本系列主要讲解Oracle OCP认证考试考点&#xff08;题目&#xff09;&#xff0c;适用于19C/21C,跟着学OCP考试必过。 91. 第91题&#xff1a; 题目 解析及答案&#xff1a; 关于 Oracle 数据库中的索引及其管理&#xff0c;以下哪三个陈述是正确的&#x…

2445.学习周刊-2024年45周

一片树叶展示了秋天的美 ✍优秀博文 数据仓库如何划分主题域在忙碌的工作中如何保持信息的输入&#xff1f;PC小米妙享安装解锁流转补丁智能数据建设与治理Dataphin对方讲话不要乱插嘴轩师处世之道 ✍实用工具 typing-practice云搭 自动化巡检系统 ✍精彩言论 话说的越快、…

关于解决使用VMWare内的虚拟机无法识别USB问题小结

目录 前言 0. 查看是不是没有开启USB3.0的支持 1. 检查一下是否禁用了VMWare USB服务 2. 无奈之举 前言 笔者今天帮助一位同志解决了VMWare内的虚拟机不识别挂载设备的办法。这里对笔者使用的排查手段做一个总结。 0. 查看是不是没有开启USB3.0的支持 我们的第一件事情就…

【364】基于springboot的高校科研信息管理系统

摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff0c;遇到了互联网时代才发现能补上自古…

RN codegen编译报错

react-native codegen 编译报错 error: redefinition of ‘NativeAccessibilityInfoSpecJSI’ class JSI_EXPORT NativeAccessibilityInfoSpecJSI : public JavaTurboModule 解决&#xff1a; codegen不能和项目本身一起编译&#xff0c;先执行./gradlew clean&#xff0c;然…

大数据技术之Hadoop :我是恁爹

就如上图中的技术分类&#xff0c;大数据技术主要解决的就是海量数据的存储和计算问题。 这两个问题的解决方案最先被 Google 被提出&#xff0c;用于解决 Google 搜索引擎海量的网页存储和索引的构建。对应的技术就是日后被人所熟知的 HDFS 和 MapReduce。 不关注大数据的可…

ATAT-mcsqs生成准随机结构(SQS)更新

通常使用第一性原理计算某些多元素占据原胞中同一位置的结构会优先考虑使用准随机结构&#xff08;special quasirandom structure&#xff0c;SQS&#xff09;来进行模拟建模。此篇教程意在整理一个较为简便的操作流程&#xff0c;以供参考。 合金理论自动化工具包(ATAT)1是一…