这个赋值是什么意思,p = q其中p和q都是结构指针?

时间:2013-12-10 16:48:18

标签: c data-structures struct

pq都是node*。但是我很困惑这个任务代表什么?

struct node
{
    int value;
    struct node *next;
};

void rearrange(struct node *list)
{
    struct node *p,*q;
    int temp;

    if (!list||!list->next) return;

    p=list;
    q=list->next;

    while(q)
    {
        temp=p->value;
        p->value=q->value;
        q-value=temp;p=q->next;
        q=p?p->next:0;
    }
}

2 个答案:

答案 0 :(得分:2)

您的标题询问p=q,但您发布的代码中没有此类作业。

赋值p=q;会将指针p设置为与指针q具有相同的值。因此,pq都指向同一个地方,地点q指向分配之前。

您的代码包含一个声明q=p?p->next:0;。这会将表达式p ? p->next : 0分配给q。表达式以这种方式评估:

  • 如果p不为零,则表达式的值为p->next
  • 如果p为零,则表达式的值为0

因此,分配等同于“如果p指向对象(不为零),则将q设置为p->next。否则,请将q设置为零。“

答案 1 :(得分:0)

p和q都指向相同的结构。 它们是结构的不同名称!