标题:表达式必须是可修改的左值
只看楼主
a15022606145
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2015-7-11
 问题点数:0 回复次数:3 
表达式必须是可修改的左值
程序代码:
#include <stdio.h>
#include<stdlib.h>
struct Node
{
    char name[32];
    Node * next;
};
void printz(Node * pHead)
{
    while (pHead)
    {
        printf("%s ", pHead->name);
        pHead = pHead->next;
    }
}
Node * DelLast(Node * pHead)
{
    Node * pTemp = pHead;
    if (pHead->next == NULL)
    {
        printf("只剩下一个头节点:%s\n", pTemp->name);
        free(pTemp);
        return NULL;
    }
    else
    {
        while (pTemp->next->next == NULL)
        {
            pTemp = pTemp->next;
        }
        printf("找到倒数第二个节点: %s\n", pTemp->name);
        free(pTemp->next);
        pTemp->next = NULL;
        return pTemp;
    }
}
int main()
{
    Node student[5] = {
        {"abc",&student[1]},
        {"bcd",&student[2]},
        {"cde",&student[3]},
        {"def",&student[4]},
        {"efg",NULL}
    };

    printz(student);
    
    student = DelLast(student);
    getchar();
    return 0;
}

第49行 表达式必须是可修改的左值  我返回结构体 为什么不行??
搜索更多相关主题的帖子: 表达式 Node next NULL student 
2018-10-30 10:35
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
student = DelLast(student);
是这一行吧
student是数组名,代表一组数的第一个元素地址,这仅仅是代表,并没有一个地方来存储这个东东。
2018-10-30 11:21
a15022606145
Rank: 1
等 级:新手上路
帖 子:75
专家分:0
注 册:2015-7-11
得分:0 
回复 2楼 吹水佬
数组名不就是首地址吗
难道 我在申请Node * phead = DelLast(student);
这样?
2018-10-30 11:23
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用a15022606145在2018-10-30 11:23:34的发言:

数组名不就是首地址吗
难道 我在申请Node * phead = DelLast(student);
这样?

如数组a作为右值时其意义与&a[0]是一样,代表的是数组首元素的首地址,而不是数组的首地址。
可以用 Node * phead = DelLast(student);
2018-10-30 11:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-490813-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.097391 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved