【问题标题】:what is the meaning of this assignment,p=q where both p and q are struct pointer?这个赋值是什么意思,p=q 其中 p 和 q 都是结构指针?
【发布时间】:2013-12-10 16:48:17
【问题描述】:

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;
    }
}

【问题讨论】:

  • 你能发布确切的代码吗?
  • 是问题的主题部分吗? q 是指向阳极的指针吗?并且您将 q 分配给 p?
  • 您发布的代码中有一个额外的}。我删除了它。但是,如果我引入了不准确之处,请随时更正我的编辑。

标签: c data-structures struct


【解决方案1】:

您的标题询问了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 设置为零。”

【讨论】:

  • 哦,讽刺的是,这是一个错误的错误。我实际上是在评估 (q=p) 并试图得出真假,而不是 p 将被评估。谢谢:-)
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    相关资源
    最近更新 更多