栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C++】C++学习记录.DAY5-结构体的使用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C++】C++学习记录.DAY5-结构体的使用

目录
  • 0.参考
  • 1.结构体创建与访问
  • 2.结构体指针
    • 3.typedef 关键字
  • 4.初始化
    • 4.1 通过冒号初始化
    • 4.2 直接初始化
    • 4.3 构造函数初始化

0.参考

菜鸟教程-数据结构

https://blog.csdn.net/weixin_43914889/article/details/107869575

1.结构体创建与访问

参考如下代码,包含了结构体类型的创建、声明、赋值、函数传参的方法,与 C 大同小异。

#include 
#include 
using namespace std;
// 声明一个结构体类型
struct ListNode
{
   int val;
   ListNode *next;
   ListNode(int x) : val(x), next(nullptr) {}
};

void printNode2(struct ListNode node)
{
   cout << "val2 : " << node.val <
   struct ListNode n2 = {2}; // 初始化
   n2.val = 22; // 赋值

   // 输出 Node 信息
   printNode2(n2);

   return 0;
}

2.结构体指针

定义指向结构的指针

ListNode *n1; 

在上述定义的指针变量中存储结构变量的地址

n1 = new ListNode(1);

使用指向该结构的指针访问结构的成员

n1->val = 11;

于是,我们便可以对上述代码进行优化,将传递结构体对象改为传递结构体指针,从而减少内存空间的占用

#include 
#include 
using namespace std;
// 声明一个结构体类型
struct ListNode
{
   int val;
   ListNode *next;
   ListNode(int x) : val(x), next(nullptr) {}
};

void printNode1(struct ListNode *node)
{
   cout << "val1 : " << node->val <
   struct ListNode *n1 = new ListNode(1);
   struct ListNode n2 = {2};
   n1->next = &n2;

   n1->val = 11;
   n2.val = 22;

   // 输出 Node 信息
   printNode1(n1);
   printNode1(n1->next);

   return 0;
}
3.typedef 关键字

下面是一种更简单的定义结构的方式,您可以为创建的类型取一个"别名"。例如:

typedef struct ListNode {
    int val;        // 节点值
    ListNode *next; // 后继节点引用
    ListNode(int x) : val(x), next(NULL) {}
}ListNode ;

现在,您可以直接使用 Books 来定义 Books 类型的变量,而不需要使用 struct 关键字。下面是实例:

ListNode n1, n2;

您可以使用 typedef 关键字来定义非结构类型,如下所示:

typedef long int *pint32;
 
pint32 x, y, z;

x, y 和 z 都是指向长整型 long int 的指针。

4.初始化 4.1 通过冒号初始化

形如:

结构体名(传入参数): 成员变量1(参数1),成员变量2(参数2){};

这是一个链表的节点:

struct ListNode {
    int val;        // 节点值
    ListNode *next; // 后继节点引用
    ListNode(int x) : val(x), next(NULL) {}
};

实例化方法如下:

// 实例化节点
ListNode *n1 = new ListNode(4); // 节点 head
ListNode *n2 = new ListNode(5);
ListNode *n3 = new ListNode(1);

// 构建引用指向,形成链表
n1->next = n2;
n2->next = n3;
4.2 直接初始化

直接在初始化时在{}中传入对应参数值即可

ListNode n4 = {2, NULL};
4.3 构造函数初始化

在上一章的学习中,我们学会了类的构造函数初始化方法,结构体构造函数初始化方法与其类似。

typedef struct Entry{
    int _key;
    int _value;
    Entry(int key,int value){
        this->_key = key;
        this->_value = value;
    }
};

int main(){
    Entry b(2,3);

    cout<< b._key << b._value <
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/997391.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号