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

请问一个C语言结构指针的有关问题

2012-04-07 
请教一个C语言结构指针的问题structnetif{structnetif*nextstructip_addrip_addrstructip_addrnetmasks

请教一个C语言结构指针的问题
struct   netif   {
    struct   netif   *next;
    struct   ip_addr   ip_addr;
    struct   ip_addr   netmask;
    struct   ip_addr   gw;
    err_t   (*   input)(struct   pbuf   *p,   struct   netif   *inp);
    err_t   (*   output)(struct   netif   *netif,   struct   pbuf   *p,
              struct   ip_addr   *ipaddr);
    err_t   (*   linkoutput)(struct   netif   *netif,   struct   pbuf   *p);
    void   *state;
    u8_t   hwaddr_len;
    u8_t   hwaddr[NETIF_MAX_HWADDR_LEN];
    u16_t   mtu;
    u8_t   flags;
    char   name[2];
    u8_t   num;
};

请问像这样的结构体定义的结构指针应该如何初始化呢?
像下面这样可以吗?我编译了一下这样怎么好像有错误?
struct   netif   *mynetif=(struct   netif*)malloc(sizeof(struct   netif));

另外像下面这么赋值都可以编译通过,但它们有什么区别??每种赋值都正确吗?
struct   netif   *mynetif   =   0;
struct   netif   *mynetif   =   (void   *)0;
struct   netif   *mynetif   =   (struct   netif   *)0;

[解决办法]
struct netif *mynetif=(struct netif*)malloc(sizeof(struct netif));

这一句仅仅只是申请空间, 当mynetif不是NULL的时候
在将该结构体中的成员 一个一个的赋值即可.


3种都可以
struct netif *mynetif = 0; 将结构体指针变量mynetif赋值为0
struct netif *mynetif = (void *)0; 便议会通过,但是会有警告, 意义同上
struct netif *mynetif = (struct netif *)0; 完全正确, 一般的做法都是这样的


热点排行