C++中结构体的类型定义和初始化以及变量引用

下面是关于C++中结构体的类型定义、初始化和变量引用的详细攻略。

结构体的类型定义

在C++中,结构体是一种用户自定义的数据类型,可以将多个不同类型的变量组合在一起形成一个新的数据类型,一般用于表示复杂的数据结构。

结构体的定义方式为:

struct 结构体名称 {
  类型1 变量名称1;
  类型2 变量名称2;
  …
  类型n 变量名称n;
};

其中,结构体名称为自定义的名称,可以是任意的标识符。类型1、类型2等表示每个变量的数据类型,变量名称1、变量名称2等表示每个变量的名称。结构体定义完成后,它就成了一种全新的数据类型,可以定义与之对应的变量。

结构体的初始化

结构体变量的初始化可以采用以下两种方式:

  1. 直接赋值初始化

直接对结构体变量进行赋值即可完成结构体变量的初始化。

例如:

struct Student {
  char name[20];
  int age;
  char gender;
} s1 = {"张三", 18, 'M'};

以上代码中,我们定义了一个名为Student的结构体,其中包含了name、age、gender三个成员变量。对结构体变量s1进行初始化时,可以直接在等号右边用花括号的方式进行赋值初始化,赋值的顺序要和结构体中成员变量的顺序一致。

  1. 分别赋值初始化

通过成员运算符“.”,可以依次对结构体的各成员变量进行赋值初始化。

例如:

struct Student {
  char name[20];
  int age;
  char gender;
};

int main() {
  Student s2;
  strcpy(s2.name, "李四");
  s2.age = 19;
  s2.gender = 'F';
  return 0;
}

以上代码中,我们定义了一个名为Student的结构体,在主函数中分别对其成员变量进行初始化。首先使用strcpy函数将字符串“李四”复制到s2结构体的name成员变量中,然后分别对age和gender成员变量进行了赋值操作。

结构体变量的引用

对于结构体中的成员变量,可以通过.操作符来访问每个成员变量的值。在结构体变量的定义时,通常采用结构体类型名+空格+变量名的方式来定义结构体变量;当然也可以先定义结构体类型名,然后再通过类型名来定义结构体变量。

例如:

struct Student {
  char name[20];
  int age;
  char gender;
};

int main() {
  // 第一种方式
  Student s3;
  s3.age = 20;
  cout<<s3.age<<endl;

  // 第二种方式
  struct Student s4;
  s4.age = 21;
  cout<<s4.age<<endl;

  return 0;
}

以上代码中,我们分别使用了两种方式来定义结构体变量,并通过.操作符来访问各成员变量的值。

除了用.操作符来引用结构体变量的成员变量外,还可以使用指向结构体的指针来访问各成员变量的值。使用指向结构体的指针访问结构体成员变量时,需使用指针运算符->。

例如:

struct Student {
  char name[20];
  int age;
  char gender;
};

int main() {
  Student s5 = {"王五", 22, 'M'};
  Student* ptr = &s5;
  cout<<"name:"<<ptr->name<<endl;
  cout<<"age:"<<ptr->age<<endl;
  cout<<"gender:"<<ptr->gender<<endl;
  return 0;
}

以上代码中,我们定义了一个指针ptr,它指向结构体变量s5。在访问s5的成员变量时,使用指针运算符->,输出每个成员变量的值。

综上所述,这就是关于C++中结构体的类型定义、初始化和变量引用的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++中结构体的类型定义和初始化以及变量引用 - Python技术站

(0)
上一篇 2023年6月20日
下一篇 2023年6月20日

相关文章

  • javascript自定义右键弹出菜单实现方法

    下面是详细的“javascript自定义右键弹出菜单实现方法”的攻略: 1. 准备工作 我们要实现自定义右键弹出菜单,需要先在页面上绑定一个右键菜单事件,然后在事件中添加自己定义的菜单项。 document.addEventListener(‘contextmenu’, function(e) { // 添加自定义菜单项 e.preventDefault()…

    other 2023年6月27日
    00
  • 戴尔笔记本开不了机怎么办 戴尔笔记本开机黑屏的解决方法

    完整攻略:戴尔笔记本开不了机怎么办 戴尔笔记本开机黑屏的解决方法 硬件问题 如果笔记本电脑一直处于黑屏状态,有可能是硬件出现了故障。以下是几种可能的硬件故障及解决方法。 1. 内存故障 如果你的笔记本电脑在启动时出现蓝屏或无法进入系统的情况,这可能是内存失败致使的。尝试以下解决方案: 查看内存是否牢固地安装在内存插槽中,如果情况不对请尝试重新插拔内存。 如果…

    other 2023年6月27日
    00
  • 浅谈css的栅格布局

    浅谈 CSS 的栅格布局 随着移动设备的普及,响应式设计已经成为了重要的网页设计原则之一。而 CSS 的栅格布局也是实现响应式设计的常用方法之一。本文将简要介绍 CSS 的栅格布局,以及如何使用常见的栅格布局框架。 栅格布局的原理 栅格布局指的是将一个页面分成若干等宽的列,放置网页组件。当页面缩小或放大时,列的宽度也会相应地缩小或放大。这样,页面布局会随着设…

    其他 2023年3月28日
    00
  • 详解能在多种前端框架下使用的表格控件

    为了在多种前端框架下使用表格控件,我们可以使用开源JavaScript库datatables。此库是一个可以为我们提供非常多样化的数据展示方式和高级交互功能的表格插件。同时,datatables还能够支持从服务器获取数据而不是仅限于静态数据的呈现方式。 以下是datatables在多种前端框架下的使用步骤: 步骤 (jQuery环境) 引入jQuery库和d…

    other 2023年6月27日
    00
  • Java中包的概念和用法实战案例分析

    Java中包的概念和用法实战案例分析 1. 包的概念 在Java中,包(Package)是一种用于组织和管理类和接口的机制。它可以将相关的类和接口组织在一起,形成一个独立的单元,方便代码的管理和维护。包的主要作用有: 命名空间管理:包可以避免类名冲突,通过包名的层次结构,可以更好地组织和管理类和接口。 访问控制:包可以定义访问权限,控制类和接口的可见性,提供…

    other 2023年9月7日
    00
  • #include 用法之我见

    #include 用法之我见 作为一个C++程序员,在处理动态数组时,使用STL中的std::vector是一种比较常见的选择。在这篇文章中,我们将探讨<vector>头文件中vector的基本用法以及一些高级技巧。 概览 在使用std::vector之前,需要包含头文件<vector>. #include <vector&gt…

    其他 2023年3月28日
    00
  • android上superuser获取root权限原理解析

    Android上Superuser获取Root权限原理解析 什么是Superuser? 在Android系统中,有些应用程序需要获取Root权限才能够执行一些敏感操作,比如修改系统设置、进入系统目录等等。Superuser就是一种允许应用程序获取Root权限的工具。 当安装Superuser后,用户可以决定哪些应用程序可以访问Root权限,哪些应用程序被禁止…

    其他 2023年3月28日
    00
  • Win10系统64位可用内存突然少很多可用空间该怎么办?

    Win10系统64位可用内存突然减少的解决攻略 如果你的Win10系统64位可用内存突然减少了很多,可能会导致系统运行缓慢或出现其他问题。以下是一些解决此问题的步骤和示例说明。 步骤1:检查系统资源使用情况 首先,你需要检查系统资源使用情况,以确定哪些进程或应用程序占用了大量的内存。你可以按照以下步骤进行操作: 打开任务管理器:按下Ctrl + Shift …

    other 2023年7月31日
    00
合作推广
合作推广
分享本页
返回顶部