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.mzph.cn/news/885897.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python第七次作业

01.设计一个函数&#xff0c;可以传入一个或多个单词的字符串&#xff0c;并返回该字符串&#xff0c;但所有五个或更多字母的单词都前后颠倒 a input("输入:") print(a) #将一句话以空格为分界拆分为单个单词 b a.split(" ") ls_1 [] ls_2 []for i i…

C++开发基础之使用librabbitmq库实现RabbitMQ消息队列通信

1. 前言 RabbitMQ是一个流行的开源消息队列系统&#xff0c;支持多种消息协议&#xff0c;广泛用于构建分布式系统和微服务架构。可以在不同应用程序之间实现异步消息传递。在本文中&#xff0c;我们将熟悉如何使用C与RabbitMQ进行消息通信。 2. 准备工作 在 Windows 平台上…

【蓝桥杯 2021 省 B2】特殊年份

题目描述&#xff1a; 今年是 2021 年&#xff0c;2021 这个数字非常特殊, 它的千位和十位相等, 个位比百位大 1&#xff0c;我们称满足这样条件的年份为特殊年份。 输入 5 个年份&#xff0c;请计算这里面有多少个特殊年份。 输入格式 输入 5 行&#xff0c;每行一个 4 位十…

谈一谈高代理的一些特质

今天被问到了这样的一个问题&#xff0c;其实这是一个很有说法的话题。在我看来&#xff0c;他既拥有我之前提到的关于代理ip的一些特质&#xff0c;又有一些自己独特的味道。打个比方吧&#xff0c;就好比他很优秀&#xff0c;因为别人有的他也有&#xff0c;但是他过分迷人的…

AI写作(四)预训练语言模型:开启 AI 写作新时代(4/10)

一、预训练语言模型概述 ​ 预训练语言模型在自然语言处理领域占据着至关重要的地位。它以其卓越的语言理解和生成能力&#xff0c;成为众多自然语言处理任务的关键工具。 预训练语言模型的发展历程丰富而曲折。从早期的神经网络语言模型开始&#xff0c;逐渐发展到如今的大规…

图像处理实验一(Matlab Exercises and Image Fundamentals)

一、基本概念介绍 MATLAB是一种广泛使用的高性能语言&#xff0c;特别适用于数学计算、算法开发、数据分析和可视化。在图像处理领域&#xff0c;MATLAB提供了强大的工具和函数&#xff0c;使得图像的读取、处理和分析变得相对简单。通过MATLAB&#xff0c;用户可以实现从基本的…

番外-JDBC:2024年最新java连接数据库教程

前言 JavaScript的内容晚点更新&#xff0c;今天继续更新一点番外&#xff0c;今天更新的是jdbc&#xff0c;如何用java连接数据库 1.导包 要使java能够连接数据库我们需要导入一个包&#xff0c;请按照以下操作安装并导包 1.进入官网 MySQL 以上为官网链接进去后点击下载…

Ubuntu22.04安装DataEase

看到DataEase的驾驶舱&#xff0c;感觉比PowerBI要好用一点&#xff0c;于是搭建起来玩玩。Dataease推荐的操作系统是Ubuntu22.04/Centos 7。 下载了Ubuntu22.04和DataEase 最新版本的离线安装包 一.安装ubuntu22.04 在安装的时候&#xff0c;没有顺手设置IP地址信息&#xff…

vueRouter路由切换时实现页面子元素动画效果, 左右两侧滑入滑出效果

说明 vue路由切换时&#xff0c;当前页面左侧和右侧容器分别从两侧滑出&#xff0c;新页面左右分别从两侧滑入 效果展示 路由切换-滑入滑出效果 难点和踩坑 现路由和新路由始终存在一个页面根容器&#xff0c;通过<transition>组件&#xff0c;效果只能对页面根容器有效…

acwing算法基础03-递归,枚举

cWing 93. 递归实现组合型枚举 1.排序 考虑顺序 2. 组合 不考虑顺序 参数 -核心 递归 模板 1.指数型 选/不选 2. 排列 -考虑顺序 &#xff08;判重数组 不知道哪个数有有没有用过&#xff09;3.组合 不考虑顺序 数据范围 从n个数里选m个数 组合数中间点 取范围 #includ…

3174、清除数字

3174、[简单] 清除数字 1、题目描述 给你一个字符串 s 。你的任务是重复以下操作删除 所有 数字字符&#xff1a; 删除 第一个数字字符 以及它左边 最近 的 非数字 字符。 请你返回删除所有数字字符以后剩下的字符串。 2、解题思路 遍历字符串&#xff1a; 我们需要逐个遍…

服务器主板北桥南桥的发展

服务器是一种为客户机提供服务的高性能计算机。 主板芯片组在 2012 年以前均采用双芯片架构&#xff0c;即 MCHICH&#xff08;北桥芯片南桥芯片&#xff0c;Memory Controller Hub I/O Controller Hub&#xff09;&#xff0c;2012 年 Intel 推出单芯片架构后成为主流&#x…

ASP.NET 部署到IIS,访问其它服务器的共享文件 密码设定

asp.net 修改上面的 IIS需要在 配置文件 添加如下内容 》》》web.config <system.web><!--<identity impersonate"true"/>--><identity impersonate"true" userName"您的账号" password"您的密码" /><co…

多角度审视推荐系统

参考自《深度学习推荐系统》——王喆&#xff0c;用于学习和记录 介绍 推荐工程师需要从不同的维度审视推荐系统&#xff0c;不仅抓住问题的核心&#xff0c;更要从整体上思考推荐问题。 具体包括以下内容&#xff1a; &#xff08;1&#xff09;推荐系统如何选取和处理特征…

从0开始机器学习--Day23--支持向量机

经过前面的学习&#xff0c;我们已经知道在解决问题时&#xff0c;重要的不仅仅是要在算法A或算法B中选择更优的&#xff0c;而是考虑怎么选择用于学习算法的特征和正则化参数&#xff0c;相比神经网络和逻辑回归&#xff0c;支持向量机在这两个方面做得更好。 优化目标(Optimi…

Vulnhub靶场案例渗透[9]- HackableIII

文章目录 一、靶场搭建1. 靶场描述2. 下载靶机环境3. 靶场搭建 二、渗透靶场1. 确定靶机IP2. 探测靶场开放端口及对应服务3. 扫描网络目录结构4. 敏感数据获取5. 获取shell6. 提权6.1 敏感信息获取6.2 lxd提权 一、靶场搭建 1. 靶场描述 Focus on general concepts about CTF…

鸿蒙5.0版开发:使用HiLog打印日志(ArkTS)

在HarmonyOS 5.0中&#xff0c;HiLog是系统提供的一个日志系统&#xff0c;它允许应用和服务按照指定的级别、标识和格式字符串输出日志内容&#xff0c;帮助开发者了解应用的运行状态&#xff0c;更好地调试程序。本文将详细介绍如何在ArkTS中使用HiLog打印日志&#xff0c;并…

生成 Django 中文文档 PDF 版

文章目录 背景克隆 Django 文档和翻译仓库配置 conf.py设置和同步翻译生成 .pot 文件运行 sphinx-intl update复制翻译文件 构建 PDF生成 tex 文件安装 MikTeX生成 PDF Sphinx 生成文档 背景 浏览看到一个帖子&#xff0c;有个评论说可以用 sphinx 构建一个 pdf&#xff0c;正…

LeetCode 每日一题 2024/11/4-2024/11/10

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 11/4 633. 平方数之和11/5 3222. 求出硬币游戏的赢家11/6 3254. 长度为 K 的子数组的能量值 I11/7 3255. 长度为 K 的子数组的能量值 II11/8 3235. 判断矩形的两个角落是否…

关于我、重生到500年前凭借C语言改变世界科技vlog.18——内存函数

文章目录 1. memcpy函数2. memmove函数3. memset函数4. memcmp函数希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力&#xff01; 内存函数是用于 操作内存块的一组函数&#xff0c;它们可以对内存进行复制、移动、设置和比较等操作。这些函数主要在 <str…