c语言一个问题,在线等

首先两个结构体如下(是队列部分的):
ypedef struct QNode{
QElemType data;

struct QNode *next;
}QNode,*QueuePtr;

typedef struct{
QueuePtr front;

QueuePtr rear;

}LinkQueue;

然后我的问题来了,不是说malloc用法是这个吗:
(分配类型 *)malloc(分配元素个数 *sizeof(分配类型))

可是,后面构造一个空队列时是这一行:
Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));
问题1:分配元素个数去哪了?
问题2:分配类型怎么两个不一样啊?

求大神,在线等!

用法中是告诉你长度怎么计算,只要符合长度就可以了,这里是1个,所以不用乘了,如果你愿意,你知道结构长度的话,你直接写一个程度都可以,不过这样不好。
分配的类型没有不一样,前面的是指针,注意在前面那个分配类型后面有一个* , 后面的是结构类型就是分配类型
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-05-09
问题1、malloc的原型如下:
void *malloc(unsigned int num_bytes);
参数只不过为一个整数,分配元素个数 *sizeof(分配类型) 就是为了算出那个整数
没写分配元素个数就是1,只要你知道分配的大小,参数都可以直接写那个整数

问题2、 Q.front和Q.rear由上面的结构体可知,他们都是QueuePtr,所以类型是一致的

我不是大神,谢谢采纳!
第2个回答  推荐于2016-06-18
typedef struct QNode{
QElemType data;
struct QNode *next;
}QNode,*QueuePtr;
在这句定义之后,QNode就代表struct QNode , QueuePtr代表struct QNode*, 即QNode *

Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));

问题1:分配元素个数去哪了? 分配一个,省略了

问题2:分配类型怎么两个不一样啊? 看上面说明,是一样的!本回答被提问者采纳
相似回答