首页 > 其他分享 >结构体里面定义一个该结构体类型变量为什么必须用指针

结构体里面定义一个该结构体类型变量为什么必须用指针

时间:2023-03-30 20:22:54浏览次数:35  
标签:member TreeNode 变量 objA 结构 ptrA class 指针

一.错误:

struct TreeNode
{
    int val;
    TreeNode left;
    TreeNode right;
};

二.分析原因:

如果在定义class A时,A域的类型是未定义的class A而不是指向class A对象的指针类型,编译器会尝试在编译时分配一块内存给A域,但由于class A的定义还没有出现,因此无法确定A域需要多少空间。这就导致了编译错误。

改用指针可以解决这个问题,因为指针的大小是固定的,与指向的类型无关。在定义class A时,编译器只需要知道A域是一个指针类型,就能正确地分配内存。同时,在实际使用A域时,可以通过对指针进行解引用来访问实际的class A对象。

三.解决措施:

struct TreeNode
{
    int val;
    TreeNode *left;
    TreeNode *right;
};

四.如何指针进行解引用来访问实际的class A对象

要通过指针来访问实际的class A对象,可以使用解引用运算符*。假设指针变量为ptrA,则可以通过以下方式访问实际的class A对象:

ClassA *ptrA;   // 假设指针变量为ptrA
ClassA objA;    // 假设有一个ClassA对象objA

ptrA = &objA;   // 将指针ptrA指向objA

// 通过指针ptrA访问objA的成员变量和成员函数
(*ptrA).member_variable = 10;
(*ptrA).member_func();
ptrA->member_variable = 10;
ptrA->member_func();

标签:member,TreeNode,变量,objA,结构,ptrA,class,指针
From: https://www.cnblogs.com/hanyryyds/p/17274141.html

相关文章

  • C#变量类型有哪些,有什么区别
    C#变量类型分为 值类型、引用类型区别:值类型变量可以直接包含值数据直接储存在栈中引用类型包含变量的引用,通过引用找到值值类型包括:整型,浮点型,字符型(char),布尔型(bool),枚举型(enum),结构型(struct)。整型包含:byte,sbyte,short,ushort,int,uint,long,ulong;浮点型包括:floa......
  • 跟着查老四学Python Day 3:数据结构与函数
    老猫:请您扮演一个python讲师,帮助一个没有代码经验的人自学python,以下是此前你设置的学习计划制定学习计划:将学习过程分为四个阶段,每个阶段关注不同的内容。第一周:掌握Python基础语法、数据类型、控制结构等。同时,学会如何在本地搭建Python开发环境。第二周:学习函数、模块、文件操......
  • pandas中的inplace参数,将变量值赋给inplace= True 的结果,输出为none
    pandas中的inplace参数,将变量值赋给inplace=True的结果,输出为none#在学习drop函数是遇见将变量值赋给inplace=True的结果,输出为noneimportpandasaspdimportnum......
  • k8s结构设计
    k8s理念声明式API是k8s最核心的设计理念。在k8s中推崇的使用方法是:首先通过一个任务编排对象,比如Pod,Job,CronJob等,描述你试图管理的应用。然后,为它定义一些运维能力对象,比......
  • 西门子S7-1200PLC结构化编程5轴伺服项目
    西门子S7-1200PLC结构化编程5轴伺服项目项目实现功能:1.三轴机械手X轴-Y轴-Z轴联动取放料PTO脉冲定位控制台达B2伺服2.台达伺服速度模式应用+扭矩模式应用实现收放卷3.......
  • Java流程控制(分支结构、循环结构)
    目录JavaSE流程控制分支结构if...else循环结构whiledowhilefor关键字JavaSE流程控制分支结构if...else//单分支,()中的条件成立,则执行if代码块if(){}//双分支,()......
  • 进程优先级及环境变量
    Linux进程优先级,环境变量入门小站 入门小站 2023-03-2422:35 发表于湖北收录于合集#Linux739个入门小站分享运维技巧及10k+Stars的开源项目227篇原......
  • 联合、变量、宏-C语言
    在C语言中,联合有以下特性:存储方面:所有的成员共享一个空间同一时间只有一个成员是有效的union的大小是其最大的成员初始化:对第一个成员做初始化静态本地变量:在本地......
  • mysql导出表结构,数据,mysqldump详解
    mysqldump定义:mysqldump是MySQL系统自带的逻辑备份工具,在对数据库进行导出工作时,经常会用到mysqldump。   mysqldump作用:mysqldump主要产生一系列的SQL语句。例如:备......
  • 结构体构造函数
    默认构造函数使用默认构造函数可以不经初始化就定义结构体变量。structnode{intx,y;node(){}//默认构造函数一般不可见}自定义构造函数当我们希望自己......