结构体变量和类对象的定义

本文深入探讨了C++中的类与结构体的概念,解释了它们的相似性和区别,并通过实例展示了如何使用typedef来简化类的类型定义。文章还详细介绍了类对象和结构体变量的指针定义及操作,以及在Win32控制台程序中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正如我们所知,结构体是一个多种数据类型的组合,和labview中簇的数据类型有点相似,同样都是讲大一堆数据类型进行打包,然后作为某个变量的属性。
类和结构体有些相似,但是类又多了函数,但是不论怎样,它都是一坨属性的集合,在结构体变量和类对象定义的时候,有很多相似的地方。
class LinkNode
{
public:
    //ElemType data;
    int data;
    LinkNode *next;
};
定义完类之后,我们尽量使用typedef 来进行类的类型重新定义,以方便我们和常用数据类型变量定义时做对比。
typedef LinkNode * POINT; //定义数据类型POINT为LinkNode 指针类型
typedef LinkNode LN;      //定义数据类型LN为LinkNode类类型
那么我们在接下来使用POINT和LN类型时,可以就像
int a;
int *p;
这样定义变量了,当然,我们下面定义的是类的对象,但是形式上变量的定义是一致的:
LN *P1; //LN类型对象的指针定义方式(这种是我自己发现的,自己还没有在程序中看到别人这样定义的)
POINT P2;//POINT 也就是LinkNode类对象的指针,同P1一样的
LN L1;//LinkNode 类的对象,所以如下操作才是正确的:
L1.data=123;
P2=&L1;
P1=P2;
cout<<P1->data<<endl;

同样地,结构体变量的定义也有如下一致的操作:

struct MyStruct
{
    int data;
    char name;

};

typedef MyStruct * PointM;
typedef MyStruct MS;

MS *PM1;
PointM PM2;
MS M1;
M1.data=4565;
PM2=&M1;
PM1=PM2;
cout<<PM1->data<<endl;
结构体变量本身就是变量,所以这种和常规变量定义一致的操作更加好记。

最后,整体win32控制台程序整体如下:

// SLinkListTest.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include<iostream>
using namespace std;
int *p;
//template<typename ElemType>
class LinkNode
{
public:
    //ElemType data;
    int data;
    LinkNode *next;
};
struct MyStruct
{
    int data;
    char name;

};

typedef LinkNode * POINT;
typedef LinkNode LN;

typedef MyStruct * PointM;
typedef MyStruct MS;
int _tmain(int argc, _TCHAR* argv[])
{
    LN *P1;
    POINT P2;
    LN L1;
    L1.data=123;
    P2=&L1;
    P1=P2;
    cout<<P1->data<<endl;

    MS *PM1;
    PointM PM2;
    MS M1;
    M1.data=4565;
    PM2=&M1;
    PM1=PM2;
    cout<<PM1->data<<endl;

    system("pause");
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值