单机游戏运行库合集:数据结构的程序题

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 15:28:40
比如说是这样的
typedef struct node
{ int data;
struct node *link;
}node;

例如说有两个指针结点*p和*q,如果为它们申请空间,
p=malloc(sizeof(node));
q=(node*)malloc(sizeof(node));
它们有什么区别吗?有什么区别呀!谢谢呀!

p=malloc(sizeof(node));
申请一个大小为结构node大小的内存交给p
这里p应该是一个指针,特别地应该是void *p;
否则如果是一个其他类型的指针则会出现警告。

q=(node*)malloc(sizeof(node));
用强制类型转换使得类型匹配。
没有编译问题的条件是:node *q;

楼上的这句话不对:
node和*之间应该有空格

p=malloc(sizeof(node)); 是动态开辟一个空间,它的返回值是这个空间的首地址,也就是一个整型的指针,但是p是结构体型的指针就存在类型不匹配的问题。这就需要把它们的类型弄一致。q=(node*)malloc(sizeof(node)); 就解决了这个问题。其实你的这句也有点问题,node和*之间应该有空格。

第一句编译会通不过。
因为malloc返回的是void *指针,需要强制转换成所需类型指针,比如此处就要用(node *)强制转成node *型指针。