晕了!一个关于指针的问题
//为什么在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)