结构体typedef struct _node {} *PNode; 这里的*PNode表示什么意思呢

microxdd 2008-09-20 12:55:33
typedef struct _node
{
void *data;
struct _node *prior;
struct _node *next;
}Node,*PNode;

这里的PNode表示什么意思?
...全文
4438 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
白发悲花落 2011-04-07
  • 打赏
  • 举报
回复
这个程序也用到了typedef,但是除了问题:
错误 mm.c 11: 变量列表语法错误#include <stdio.h>
怎么回事啊??

#define LIST_INIT_SIZE 100
typedef int ElemType;

typedef struct
{ ElemType *elem;
int length;
int listsize;
}SqList;
void InitList_Sq(Sqlist &L)
{L.elem=new ElemType[LIST_INIT_SIZE ];
L.length=0;
L.listsize=LIST_INIT_SIZE;
}
void ListInsert_Sq(SqList &L,int i,ElemType e)
{ElemType *p,*q;
if(i<1||i>L.length+1)printf("error");
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;
*q=e;
++L.length;
}
void display(SqList L)
{int i;
for(i=0;i<L.length;i++)
printf("%5d",L.elem[i]);
printf("\n");
}

void main()
{int i;SqList L;
ElemType e;
InitList_Sq(L);
for(i=1;i<=10;i++)
{scanf("%d",&e);
ListInsert_Sq(L,i,e);
}
display(L);
lie1213 2010-10-02
  • 打赏
  • 举报
回复
指向这个STRUCT的类型的指针
shexinwei 2010-10-01
  • 打赏
  • 举报
回复 1

typedef struct _node
{
void *data;
struct _node *prior;
struct _node *next;
}Node,*PNode;


可以用以下例子类比

typedef int int32,*pInt32;


以上一句又可以写成:
[code=C/C++]
typedef int int32; //定义了一种新类型int32
typedef int *pInt32; //*pInt32 是int 型,那么pInt32就是指向int型的指针
PolarStorm 2010-10-01
  • 打赏
  • 举报
回复 1
在C++中这是一个风格问题。
typedef struct
{
//content
} SA, *SpA;

如果typedef成SA时,在定义struct对象指针的时候可以写成:
  sA *pParam;
如果typedef成*SpA时,在定义struct对象指针的时候可以写成:
  spA pParam; //也就是sA* pParam;

  别看sA *pParam和sA* pParam一样,只是“*”号位置换了一下,虽然说只是风格问题,但在实际理解上是有区别的!
  “*”号紧挨着变量名之前(sA *pParam)标识定义的是一个struct变量的指针,此时也就是上述typedef成SA的原因;
  “*”号紧挨着类型名之后(sA* pParam)表示定义的是一个struct指针的变量,此时也就是上述typedef成*SpA的原因;
leeyu35 2010-10-01
  • 打赏
  • 举报
回复
先看看c程序设计吧
wgmkss 2010-10-01
  • 打赏
  • 举报
回复
结构內形的指针别名
kumanong 2010-10-01
  • 打赏
  • 举报
回复
受教了。
zgjxwl 2008-09-21
  • 打赏
  • 举报
回复 4
把它分开写会好理解一点,上面的等价于
 struct _node 
{
void *data;
struct _node *prior;
struct _node *next;
}
typedef _node Node; //给这个_node结构体定义一个别名,任何使用_node的地方都可以用Node来替换
typedef _node* PNode; //给这个指向_node结构体的指针类型_node*定义一个别名,任何使用_node*的地方都可以用PNode来替换
whuyotc 2008-09-21
  • 打赏
  • 举报
回复
结构体指针,指向结构体
OenAuth.Core 2008-09-20
  • 打赏
  • 举报
回复
用来定义指针结构体类型:如PNode p效果同struct _node* p
大写的池 2008-09-20
  • 打赏
  • 举报
回复
就是将 struct node* 重命名
zhuwanglove 2008-09-20
  • 打赏
  • 举报
回复
up
zhangzhao123 2008-09-20
  • 打赏
  • 举报
回复
好好看看C的结构内容
sagegz 2008-09-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wangdeqie 的回复:]
定义一个结构体Node类型指针,指向这个结构体
[/Quote]
2楼正解!
BenXx 2008-09-20
  • 打赏
  • 举报
回复
楼主学过指针吗??

int *p;
上面这句话的意思是定义一个指向int类型的指针p

同理,struct node{ ...} *P;

就是定义了一个指向struct类型得指针p
shiyi820509 2008-09-20
  • 打赏
  • 举报
回复
up
License2Kill 2008-09-20
  • 打赏
  • 举报
回复
Done.
z466845747 2008-09-20
  • 打赏
  • 举报
回复
跟前一个一样,只不过它是指针类型的结构体变量
mars_man 2008-09-20
  • 打赏
  • 举报
回复
LZ的语法没学好啊,PNode是一个指针类型
就呆在云上 2008-09-20
  • 打赏
  • 举报
回复
这种定义如果你学过数据结构就很简单了
呵呵
就是定义一个指针:
typedef struct _node 
{
void *data;
struct _node *prior;
struct _node *next;
} Node,*PNode;

PNode中P其实就是pointer的意思,以后你可以直接这么使用他:
PNode a;
相当于
Node *a;
又相当于:
struct _node *a;
加载更多回复(2)
链表实验报告全文共5页,当前为第1页。链表实验报告全文共5页,当前为第1页。C语言程序设计实验报告 链表实验报告全文共5页,当前为第1页。 链表实验报告全文共5页,当前为第1页。 实验一:链表的基本操作 一·实验目的 掌握链表的建立方法 掌握链表中节点的查找与删除 掌握输出链表节点的方法 掌握链表节点排序的一种方法 掌握C语言创建菜单的方法 掌握结构化程序设计的方法 二·实验环境 硬件环境:当前所有电脑硬件环境均支持 软件环境:Visual C++6.0 三.函数功能 1. CreateList // 声明创建链表函数 2.TraverseList // 声明遍历链表函数 3. InsertList // 声明链表插入函数 4.DeleteTheList // 声明删除整个链表函数 5. FindList // 声明链表查询函数 四.程序流程图 声明函数 主函数 main 创建链表函数定义 CreateList 定义链表遍历函数 TraverseList 定义链表查询函数 FindList 定义链表插入函数在链表位置第pos节点前插入包含数据val的节点 InsertList(PNode List, int pos, int val) 插入节点 定义删除整个链表函数 DeleteTheList 定义删除链表元素函数删除链表中的第pos节点DeleteList(PNode List, int pos) 删除节点 声明函数 主函数 main 创建链表函数定义 CreateList 定义链表遍历函数 TraverseList 定义链表查询函数 FindList 定义链表插入函数在链表位置第pos节点前插入包含数据val的节点 InsertList(PNode List, int pos, int val) 插入节点 定义删除整个链表函数 DeleteTheList 定义删除链表元素函数删除链表中的第pos节点DeleteList(PNode List, int pos) 删除节点 声明函数 主函数 main 创建链表函数定义 CreateList 定义链表遍历函数 TraverseList 定义链表查询函数 FindList 定义链表插入函数在链表位置第pos节点前插入包含数据val的节点 InsertList(PNode List, int pos, int val) 插入节点 定义删除整个链表函数 DeleteTheList 定义删除链表元素函数删除链表中的第pos节点DeleteList(PNode List, int pos) 删除节点 声明函数 主函数 main 创建链表函数定义 CreateList 定义链表遍历函数 TraverseList 定义链表查询函数 FindList 定义链表插入函数在链表位置第pos节点前插入包含数据val的节点 InsertList(PNode List, int pos, int val) 插入节点 定义删除整个链表函数 DeleteTheList 定义删除链表元素函数删除链表中的第pos节点DeleteList(PNode List, int pos) 删除节点 五.程序代码 #include #include typedef int Elemtype; typedef int Status; typedef struct node//定义存储节点 { int data;//数据域 struct node *next;//结构体指针 } *linklist,node;//结构体变量,结构体名称 linklist creat (int n)//创建单链表 { linklist head,r,p;//定义头指针r,p,指针 int x,i; head=(node *)malloc(sizeof(node));//生成头结点 链表实验报告全文共5页,当前为第2页。链表实验报告全文共5页,当前为第2页。 r=head;//r指向头结点 链表实验报告全文共5页,当前为第2页。 链表实验报告全文共5页,当前为第2页。 printf("输入数字:\n"); for(i=n;i>0;i--)//for 循环用于生成第一个节点并读入数据 { scanf("%d",&x); p=(node *)malloc(sizeof(node)); p->data=x;//读入第一个节点的数据 r->next=p;//把第一个节点连在头结点的后面 r=p;//循环以便于生成第二个节点 } r->next=0;//生成链表后的断开符 return head;//返回头指针 } void output (linklist head)//输出链表 { linklist p; p=he
敬告:本课程基于最新版FFmpeg4.3.1开发,仅供学习参考,不可以直接商用(想直接购买商用源代码的同学,请放弃!)。我将带领大家从以下几个方面来深入剖析ffmpeg4.3:“拿来主义”、“为我所用”。通过学习本课程,您将收获:三大多媒体框架(DirectShow、GStreamer、FFmpeg)简介与分析FFmpeg4.3的开发环境搭建(重要讲解windows下的源码编译及vs2015的环境)ffmpeg.c(4.3.1)源码剖析(分析开源大师们的设计理念和编码技巧)亲手封装私有函数:获取音视频流信息(类似于MediaInfo)、获取实时转码进度(改善用户体验)两套实现代码: MFC和Qt。-------------------------------------------------------------------音视频是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学 基础理论,而是直接做项目,往往会看到c/c++的代码时一头雾水,不知道代码到底是什么意思,这是为什么呢? 因为没有学习音视频的基础理论,就比如学习英语,不学习基本单词,而是天天听英语新闻,总也听不懂。所以呢,一定要认真学习基础理论,然后再学习播放器、转码器、非编、流媒体直播、视频监控、等等。 梅老师从事音视频与流媒体行业18年;曾在永新视博、中科大洋、百度、美国Harris广播事业部等公司就职,经验丰富;曾亲手主导广电直播全套项目,精通h.264/h.265/aac,曾亲自参与百度app上的网页播放器等实战产品。目前全身心自主创业,主要聚焦音视频+流媒体行业,精通音视频加密、流媒体在线转码快编等热门产品。  

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧