好运杏仁eee 2023-05-22 19:37 采纳率: 75%
浏览 28
已结题

浙江大学数据结构,对结构体指针的理解

学习浙江大学数据结构时遇到了一些问题,望得到解答,谢谢


typedef struct ENode *PtrToENode;
struct ENode{
Vertex V1, V2; /* 有向边<V1, V2> */
WeightType Weight; /* 权重 */
};
typedef PtrToENode Edge;

这段代码的
typedef struct ENode *PtrToENode;
typedef PtrToENode Edge;
应该怎么理解?

我能否理解为我用PtrToENode指向结构体ENode,再将PtrToENode重新命名为Edge,也就是说Edge指向了PtrToENode?
为什么要多次这样命名呢?如果要使用应该如何运用他们?

  • 写回答

2条回答 默认 最新

  • 独处东汉 2023-05-22 20:17
    关注

    供参考:

    #include <stdio.h>
    
    
    // 定义顶点类型为整数
    typedef int Vertex;
    // 定义权重类型
    typedef int WeightType;
    
    struct ENode{
        Vertex V1, V2;     /* 有向边<V1, V2> */
        WeightType Weight; /* 权重 */
    };
    
    typedef struct ENode *PtrToENode;  // 给 struct ENode * 这种数据类型起一个新的名字,叫做 PtrToENode。以后声明指向结构体的指针时,可以直接用 PtrToENode。
    
    typedef PtrToENode Edge;           // 给 PtrToENode 这种数据类型起一个新的名字,叫做 Edge。以后声明边时,可以直接用 Edge。
    
    int main(void) {
        // 声明一个结构体变量
        struct ENode e1;
        // 声明一个指向结构体的指针变量
        PtrToENode p;
        // 声明一个边变量
        Edge e2;
        // 为结构体变量赋值
        e1.V1 = 1; e1.V2 = 2; e1.Weight = 10;
        // 为指针变量赋值
        p = &e1;
        // 为边变量赋值
        e2 = p;
        // 访问结构体成员
        printf("%d %d %d\n", e1.V1, e1.V2, e1.Weight);
        // 访问指针所指向的结构体成员
        printf("%d %d %d\n", p->V1, p->V2, p->Weight);
        // 访问边所代表的结构体成员
        printf("%d %d %d\n", e2->V1, e2->V2, e2->Weight);
        
        return 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月5日
  • 已采纳回答 5月28日
  • 创建了问题 5月22日

悬赏问题

  • ¥15 office打开卡退(新电脑重装office系统后)
  • ¥300 FLUENT 火箭发动机燃烧EDC仿真
  • ¥15 【Hadoop 问题】Hadoop编译所遇问题hadoop-common: make failed with error code 2
  • ¥15 vb6.0+webbrowser无法加载某个网页求解
  • ¥15 RPA财务机器人采购付款流程
  • ¥15 计算机图形多边形及三次样条曲线绘制
  • ¥15 根据protues画的图用keil写程序
  • ¥200 如何使用postGis实现最短领规划?
  • ¥15 pyinstaller打包错误
  • ¥20 cesm的气溶胶排放文件