请教一个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; 完全正确, 一般的做法都是这样的