CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

有关C语言中typedef的用法?请求帮助!!

楼主zigz(|||||||||||||||||||)2002-04-05 10:47:23 在 C/C++ / C语言 提问

请看:  
  typedef   struct   LNode  
  {  
        ElemType   data;  
        struct   LNode   *next;  
  }LNode,Ppp,*   LinkList;  
   
  上面这段程序中  
  1,是不是定义了一个LNode类型的结构?  
   
  2,Ppp是不是LNode类型的变量(LNode   Ppp)?还是Ppp本身也是一个结构类型(struct   Ppp)?  
  也即:  
    struct   Ppp                                                
  {                                                                                                      
        ElemType   data;                          
        struct   Ppp   *next;  
  }Ppp,*   LinkList;  
   
  2,看不懂*   LinkList在这里算什么??是LNode类型的指针(LNode   *LinkList)呢?还是定义了一个和LNode拥有同样结构的指针类型?请问*LinkList的正式名称叫什么(是指针类型?是结构指针?)?  
   
  3,还是关于*LinkList,假设它是一个指针类型,那么由他定义的变量,是不是都是指针?比如:LinkList   L;则说L就是一个LinkList类型的指针呢?  
   
  4,为什么要用typedef?只用LNode也可以啊!  
  用LNode定义指针变量:LNode*   Iptr;  
  是不是就等同于上面的:LinkList   Iptr;???  
   
  5,谢谢!需要您的解惑。 问题点数:100、回复次数:6Top

1 楼hcpp(简单的才是美的)回复于 2002-04-05 10:56:11 得分 50

1.yes  
  2.全为类型;  
  3。结构指针类型;  
  4。You   can   use   typedef   declarations   to   construct   shorter   or   more   meaningful   names   for   types   already   defined   by   the   language   or   for   types   that   you   have   declared.   Typedef   names   allow   you   to   encapsulate   implementation   details   that   may   change.  
   
  In   contrast   to   the   class,   struct,   union,   and   enum   declarations,   typedef   declarations   do   not   introduce   new   types   —   they   introduce   new   names   for   existing   types.  
   
  You   cannot   use   the   typdef   specifier   inside   a   function   definition.  
   
  Typedef   names   share   the   name   space   with   ordinary   identifiers.   Therefore,   a   program   can   have   a   typedef   name   and   a   local-scope   identifier   by   the   same   name.  
   
  当然相等。  
  5。完。  
   
   
  Top

2 楼cwanter(亚玛逊河上的渔夫)回复于 2002-04-05 11:03:00 得分 50

我的理解:  
  1。是定义了LNode结构的类型,LNode是一个新的类型。不过你的结构名和类型名是重复的,最好不要这样用。  
  2。LinkList应该是一个指针类型。  
  3。LL就是一个LinkList类型的指针。  
  4。作用一样。  
  5。大家共同进步。Top

3 楼bao_zey(幽游白书)回复于 2002-04-05 11:39:01 得分 0

typedef   char   CHAR;  
  typedef   CHAR   *LPSTR,   *PSTR;  
  typedef   LPSTR   PTSTR,   LPTSTR;  
  MS就是这么定义的。  
  LPSTR就是一个指向char的指针Top

4 楼anyyan(泥)回复于 2002-04-05 11:56:58 得分 0

2)Ppp是结构变量,不是类型,你不可以再以  
  struct   Ppp   Ppp1;的形式来定义变量Ppp1,  
  而只能是struct   LNode   Ppp1;                                              
   
  2&3)LinkList是结构指针而非类型,所以LinkList   Iptr;是不对的  
  只能是诸如LinkList=&Ppp使指向Ppp,然后*LinkList等价于Ppp  
   
  4)在C中(以你定义的结构类型为例),如果不用typedef,在程序里还要定义其他的该结构变量时,必须是struct   LNode   ppp1;(struct不可少!所以LNode*   Iptr是不对的),而用了typedef,则LNode即为类型名,可直接定义其他如LNode   ppp1。且一般应全部大写(LNODE)以区别变量名。  
   
  C++中则无所谓struct,不过一般结构定义放在头文件中,且申明时不知道要用多少该类型的变量,故一般都是用typedef   STUDENT{……}定义结构类型。  
  Top

5 楼tnt_tnt(网络数据流)回复于 2002-04-05 12:39:58 得分 0

这只是对象和实例的区别像你那样定义仍然是一个对象,就好像int一样  
  可以用它来定义另外的实例  
  Top

相关问题

  • C++用法探讨。
  • C#中as的用法
  • dev c++的用法
  • C#接口用法
  • C#中with的用法?
  • 关于TopMost的用法,请求帮助
  • c++里hashtable的用法
  • typedef的用法及其他
  • Borland C++ free command 的用法
  • 请教 C++ 中& 的用法

关键词

  • 指针
  • 结构
  • lnode
  • linklist
  • 定义
  • 类型
  • ppp
  • 变量
  • typedef
  • iptr

得分解答快速导航

  • 帖主:zigz
  • hcpp
  • cwanter

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo