求解一个指针操作的问题,直接上代码。

写了一个队列,结果初始化的时候就遇到问题了,吧程序简化了一下,求问大神

 #include <stdio.h>
#include <stdlib.h>
struct  PCB_type 
{
    int pid ;   
    int state ; 
    int cpu_time ;  
};
typedef struct QNode
{
    struct PCB_type PCB;
    struct QNode * next;
}QNode;
typedef struct 
{
    QNode * front;
    QNode * rear;
}LinkQuene;

int main()
{
    QNode *Q = (QNode*)malloc(sizeof(QNode));
    LinkQuene *ready;
    ready->front = ready->rear = Q;         //到这里就无法执行
    Q->PCB.pid = 1;
    printf("%d\n",ready->front->PCB.pid);
    return 0;
}

ready没有分配空间,它指向的是内存中的一个未知区域,你直接->试图取出它的成员变量就会出现异常

 #include <stdio.h>
#include <stdlib.h>
struct  PCB_type 
{
    int pid ;   
    int state ; 
    int cpu_time ;  
};
typedef struct QNode
{
    struct PCB_type PCB;
    struct QNode * next;
}QNode;
typedef struct 
{
    QNode * front;
    QNode * rear;
}LinkQuene;

int main()
{
    QNode *Q = (QNode*)malloc(sizeof(QNode));
    LinkQuene *ready = (LinkQuene *)malloc(sizeof(LinkQuene));
    ready->front = ready->rear = Q;         //到这里就无法执行
    Q->PCB.pid = 1;
    printf("%d\n",ready->front->PCB.pid);
    return 0;
}

LinkQuene *ready;
你给这个ready分配空间了没
没有吧

指针是存储地址的东西
说白了通过指针去访问内存
操作指针之前必须要给指针开辟对应的地址啊

按你的定义ready应该是指向结构体的指针,但是它现在仅仅是指向随机内存的指针,还没有明确指向的结构体。

ready没有分配空间............