我想知道这两句话有什么区别:
queue* f=(queue*)malloc(sizeof(queue)); queue* f=(queue*)malloc(sizeof(queue*));以下是队列的定义:
typedef struct queue
{
int arr[N];
int tail;
}queue;提前感谢!
发布于 2020-05-31 15:57:59
区别在于,第二行是错误的;它分配了足够的空间来存储指向queue的指针,而不是queue本身,但它被分配给一种类型,该类型假定它指向足够的空间来存储整个queue。
Neither one requires a cast,所以正确的形式是:
queue *f = malloc(sizeof(queue));为了更安全起见,不要引用类型本身,引用要分配给的变量,以避免重复类型(如果类型更改可能会导致维护问题);这也意味着sizeof doesn't need parentheses
queue *f = malloc(sizeof *f);https://stackoverflow.com/questions/62118730
复制相似问题