include0_0 2016-06-08 02:03 采纳率: 100%
浏览 1257
已采纳

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

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

 #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;
}
  • 写回答

4条回答 默认 最新

  • 小灸舞 2016-06-08 02:36
    关注

    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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题