首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

晕了!一个关于指针的有关问题

2012-02-07 
晕了!一个关于指针的问题//为什么在AddDefaultRoute函数中和主函数中显示的结果不一样啊!!#includestdio.

晕了!一个关于指针的问题
//为什么在AddDefaultRoute函数中和主函数中显示的结果不一样啊!!
#include   "stdio.h "
#define   LEN   sizeof(PRouteNode)
#include   "conio.h "

typedef   struct   routenode
{
  int   destn[4];         //目的网络
  int   netmask[4];         //目标网关
  struct   routenode   *next;             //下一个路由表节点
}RouteNode;           //定义路由表结构体

typedef   RouteNode*   PRouteNode;

PRouteNode   InitRouteMap()
{
  int   i;
  PRouteNode   p;
  p=(PRouteNode)malloc(LEN);           //为新的路由表节点申请内存空间
  p-> next=NULL;
  return   p;         //将p返回作为路由表的头节点
}

void   AddDefaultRoute(PRouteNode   p)
{
  int   i;
  PRouteNode   pr;
  pr=(PRouteNode)malloc(LEN);
  for(i=0;i <4;i++)           //建立第一个路由表节点,其为默认路由
  {
    pr-> destn[i]=0;
    pr-> netmask[i]=0;
  }
  pr-> next=p-> next;
  printf( "%d.%d.%d.%d\n ",pr-> netmask[0],pr-> netmask[1],pr-> netmask[2],pr-> netmask[3]);
  p-> next=pr;
}

main()
{
  int   quit=0;     //程序退出控制变量
  int   key;       //监测用户按键
  PRouteNode   head,p;           //定义路由表的头指针
  head=InitRouteMap();     //初始化路由表
  puts( "whether   add   a   default   route?Y/N ");         //询问用户是否加入默认路由
  key=getch();
  if(key== 'y '||key== 'Y ')
  {
    AddDefaultRoute(head);
  }
  p=head-> next;
  printf( "%d.%d.%d.%d\n ",p-> netmask[0],p-> netmask[1],p-> netmask[2],p-> netmask[3]);
  getch();
}

[解决办法]
#define LEN sizeof(PRouteNode)
这句话就不对吧

至少也该是
#define LEN sizeof(RouteNode)

热点排行