C++结构体详解

目录
  • 一、结构体的定义
  • 二、创建具体的变量(3种)
  • 三、结构体数组
  • 四、结构体指针
  • 五、结构体嵌套结构体
  • 六、结构体做函数参数
    • 1、值传递
    • 2、地址传递
  • 七、结构体中const使用场景
  • 总结

一、结构体的定义

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

二、创建具体的变量(3种)

struct Student s1;
s1.name = "张三";
s1.age = 18;
s1.score = 90;
struct Student s1 = {"李四" ,19 , 80 };
struct Student
{
    string name;
    int age;
    int score;
}s3;
s3.name = "王五";
s3.age = 18;
s3.score = 89;

三、结构体数组

struct Student stuArray[3] =
{
    {"张三" , 20 , 92},
    {"李四" , 18 , 89},
    {"王五" , 24 , 95}
};
stuArray[2].name = "赵六";// 把王五改为赵六
//遍历结构体数组
for(int i =0; i < 3;i++)
{
    cout << "姓名:" << stuArray[i].name
         << "年龄:" << stuArray[i].age
         << "分数:" << stuArray[i].score <<endl;
}

四、结构体指针

利用操作符-> 可以通过结构体指针访问结构体属性。

struct Student s = {"张三", 18, 90};
struct Student *p = &s;
//通过指针访问结构体变量中的数据
cout << "姓名:" << p->name << endl; 

五、结构体嵌套结构体

struct student
{
    String name;
    int age;
    int score;
}
struct teacher
{
    int id;
    String name;
    int age;
    struct student stu;
}
teacher t;
t.stu.name;

六、结构体做函数参数

1、值传递

void printStudent(struct Student s1)
{
    cout << "姓名:" <<s1.name << "年龄:" << s1.age << "分数" << s1.score;
}
int main(){
    struct Student s1;
    s1.name = "张三";
    s1.age = 18;
    s1.score = 95;
    printStudent(s1);
}

2、地址传递

void printStudent(struct Student * s1)
{
    cout << "姓名:" << p->name << "年龄:" << p->age << "分数" << p->score;
}
int main(){
    struct Student s1;
    s1.name = "张三";
    s1.age = 18;
    s1.score = 95;
    printStudent(&s1);
}

七、结构体中const使用场景

void printStudent(const Student * s1)
{
    cout << "姓名:" << p->name << "年龄:" << p->age << "分数" << p->score;
}
int main(){
    struct Student s1;
    s1.name = "张三";
    s1.age = 18;
    s1.score = 95;
    printStudent(&s1);
}

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • C++中结构体和Json字符串互转的问题详解

    大家有没有在项目中遇到过,将一些预定义的本地结构体转换为Json字符串后,发送到网络中的情形.那我猜想下大家常规的做法:写一个函数,传入结构体的指针,然后在函数中对结构体的每一个成员根据其类型,使用Json类库的赋值方法,直接或间接创建Json子对象,组成一个内存树状结构,最后调用Json类库的方法生成字符串.这样的做法似乎比较完美,工作完成得很好,确实也挑不出什么毛病来,让我们先看看在golang中是怎么做的: type Person struct { Name string Age int

  • C++结构体struct和类class区别详解

    之前因为都在忙着毕业的开题答辩与投稿论文的事宜,一直没有时间更新这个系列的文章.师弟看了上一篇雾中风景的文章,希望我继续把这个系列的文章写下去.坦白说,C++的特性很多,这也不是教学指南的文章,我会选取一些自己在学习C++过程之中值得探讨的问题和大家聊一聊,来抛砖引玉.好的,今天先放点开胃菜,和大家聊聊struct与class关键字. 1.struct关键字: 在C++语言作为C语言的一个超集,是兼容C语言的所有语法规则的.C语言是我学习的第一门编程语言,我自然对于其中的语法规则十分熟悉,C语言

  • c++ STL之list对结构体的增加,删除,排序等操作详解

    对STL中的list进一步学习,编程过程中对结构体的操作很多. 全部代码如下: /* Project:list对结构体的使用 Date: 2018/07/14 Author: Frank Yu 常用函数:int size() 返回容器元素个数:bool empty() 判断容器是否为空,true为空: 增加函数:void push_back(元素) 尾元素后增加一个元素:push_front(元素) 首元素前增加一个元素: iterator insert(lit,元素)在迭代器指针lit前插入元

  • C++关于类结构体大小和构造顺序,析构顺序的测试详解

    目录 总结 #include <iostream> using namespace std; /** 1. c++的类中成员若不加修饰符的话,默认是private 2. 调用构造函数时,先递归调用最顶级的父类构造函数,再依次到子类的构造函数. 3. 调用析构函数时相反,先调用最底层的子类析构函数,再依次到父类的构造函数. 4. 空类的sizeof(A)大小为1,多个空类继承后的子类大小也是1 */ class A{ public: A() { cout<<"A const

  • 结构体对齐的规则详解及C++代码验证

    目录 基本概念 结构体对齐的规则 程序验证 基本概念 CPU一次能读取多少个字节的数据主要是看数据总线是多少位的,16位CPU一次能读取2个字节,32位CPU一次能读取4个字节,64位CPU一次能读取8个字节.并且不能跨内存区间访问,这句话的意思可以理解为,如果CPU是32位的话,那么可以将整个内存区间每4个字节分为一块(BLOCK),每次读取一个BLOCK的数据. 那么对于下面这个结构体: struct st { char c; int i; }; 如果不进行对齐操作,char 的地址范围0x

  • 基于C#调用c++Dll结构体数组指针的问题详解

    C#调用c++dll文件是一件很麻烦的事情,首先面临的是数据类型转换的问题,相信经常做c#开发的都和我一样把学校的那点c++底子都忘光了吧(语言特性类). 网上有一大堆得转换对应表,也有一大堆的转换实例,但是都没有强调一个更重要的问题,就是c#数据类型和c++数据类型占内存长度的对应关系. 如果dll文件中只包含一些基础类型,那这个问题可能可以被忽略,但是如果是组合类型(这个叫法也许不妥),如结构体.类类型等,在其中的成员变量的长度的申明正确与否将决定你对dll文件调用的成败. 如有以下代码,其

  • C语言 structural body结构体详解用法

    目录 结构体 结构体类型的声明 举个现实例子 程序实例 结构体成员的类型: 结构体变量的定义和初始化 程序一 结构体嵌套情况下,初始化和定义 结构体成员的访问 结构体传参 程序一: 程序二 结构体 结构是一些值的集合,这些值称为成员变量,结构的每个成员可以是不同类型的变量 结构体类型的声明 创建 结构体类型 没有占 内存空间,因为还 没有 创建变量 举个现实例子                 盖房子 图纸 --------------------> 房子 结构体类型        结构体变量

  • Go语言空结构体详解

    目录 前言 什么是空结构体 特点 地址相同 大小为0 原理探究 使用场景 集合(Set) channel中信号传输 总结 前言 在使用 Go 语言开发过程中,我们不免会定义结构体,但是我们定义的结构体都是有字段的,基本不会定义不包含字段的 空结构体.你可能会反过来问,没有字段的空结构体有什么用呢?那么我们这篇文章就来研究下空结构体吧! 注:本文基于go 1.14.4 分析 什么是空结构体 我们说不包含任何字段的结构体叫做空结构体,可以通过如下的方式定义空结构体: 原生定义 var a struc

  • Go实现简单的数据库表转结构体详解

    目录 前言 设计过程 迭代升级 前言 码上源码 package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" "strings" ) /** 自动将表生成 model结构, 通过创建数据库连接,读取数据库的所有表并对所有的表元数据封装转化实体结构体 */ type SchemaMeta struct { Field string Ty

  • C#枚举类型和结构体详解

    注意:枚举类型和结构体都属于值类型. 结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的方法: struct student { public int nianling; public int fenshu; public string name; public string sex; public int sum; } 以上的语句就是定义一个名称为student的结构体,其中包含int类型的年龄.分数.总和,和string类型的姓名.性别. 二.用法: 在

  • C++结构体详解

    目录 一.结构体的定义 二.创建具体的变量(3种) 三.结构体数组 四.结构体指针 五.结构体嵌套结构体 六.结构体做函数参数 1.值传递 2.地址传递 七.结构体中const使用场景 总结 一.结构体的定义 struct Student { string name; int age; int score; }; 二.创建具体的变量(3种) struct Student s1; s1.name = "张三"; s1.age = 18; s1.score = 90; struct Stu

  • PHP读书笔记整理_结构语句详解

    PHP结构语句顺序结构 顺序结构就像一条直线,按着顺序一直往下执行.我们编写的代码默认都是按照顺序结构执行的. 条件结构之if-else- 条件结构就像一个岔路口,可以向左走,也可以向右走.比如上洗手间,我们知道我们的性 别,这时候我们需要根据洗手间提供的条件,左边男洗手间,右边女洗手间,或者正好相反,其中性别就是这个条件结构的条件.再比如,现在的分数都流行使用 A.B.C来分级,假设考试成绩是93分,可以将其设置为等级A,考试成绩是87,可以将其设置为等级B,这里分数区间即为条件结构中的条件.

  • Java导出oracle表结构实例详解

     Java导出oracle表结构实例详解 最近用到的,因为plsql是收费的,不让用,找了很多方法终于发现了这个. 核心语句 SELECT DBMS_METADATA.GET_DDL(U.OBJECT_TYPE, U.object_name), U.OBJECT_TYPE FROM USER_OBJECTS U where U.OBJECT_TYPE = 'TABLE' or U.OBJECT_TYPE = 'VIEW' or U.OBJECT_TYPE = 'INDEX' or U.OBJEC

  • C语言线性表顺序存储结构实例详解

    C语言线性表顺序存储结构实例详解 1. 什么是顺序存储结构? 用一段地址连续的存储单元依次存储线性表的数据元素. 2.线性表的顺序存储结构 #include<stdio.h> #include<stdlib.h> #define Max 80 //存储空间初始分配量 #define Increment 10 //存储空间分配增量 typedef struct { int *elem; // 存储空间基地址,此处为int型,视情况而定 int length; // 元素表当前长度 i

  • JVM入门之JVM内存结构内容详解

    一.java代码编译执行过程 源码编译:通过Java源码编译器将Java代码编译成JVM字节码(.class文件) 类加载:通过ClassLoader及其子类来完成JVM的类加载 类执行:字节码被装入内存,进入JVM虚拟机,被解释器解释执行   注:Java平台由Java虚拟机和Java应用程序接口搭建,Java语言则是进入这个平台的通道,   用Java语言编写并编译的程序可以运行在这个平台上 二.JVM简介 1.java程序经过一次编译之后,将java代码编译为字节码也就是class文件,然

  • C语言if选择结构语句详解

    目录 一.选择结构功能 二.选择结构形式 三.选择结构分类 1.单分支选择结构 2.双分支选择结构 3.多分支选择结构 四.条件表达式 总结 一.选择结构功能 根据给定的判断条件,控制程序执行流程的语句. 二.选择结构形式 单分支:根据给定条件,决定是否执行一段语句. 双分支:根据给定条件,执行两条路径中的一条. 多分支:根据给定条件,决定执行其中一条路径. 三.选择结构分类 1.单分支选择结构 ①功能 根据给定表达式决定执行操作或者跳过操作. ②单分支if语句格式 ③一般形式 if(表达式)

随机推荐