在编译下面给出的代码时,我得到了错误: lvalue required as left operand of assignment for both statementsstr+i = s,c,pointers,reverse,c-strings,function-definition"/>

首页 > 解决方案 > 在 C 中,给定 char *ptr 并定义直到 ptr+n,当我尝试类似于 (ptr+i) = (ptr+j); 的语句时 我,j

在编译下面给出的代码时,我得到了错误: lvalue required as left operand of assignment for both statementsstr+i = s

问题描述

在编译下面给出的代码时,我得到了错误: lvalue required as left operand of assignment for both statementsstr+i = str+((len-1)-i);str+((len-1)-i) = temp;.

为什么?

char* str_reverse(char *str, int len)
{
    char *temp;
    int i, mid;

    if(len%2 == 0)
    {
        mid = len/2 - 1;
    }
    else
    {
        mid = (len-1)/2;
    }

    for(i=0;i<mid;i++)
    {
        temp = str+i;
        str+i = str+((len-1)-i);
        str+((len-1)-i) = temp;
    }

    return str;
}

str是一个左值,因为它是内存中包含地址的地方。

str+i 只是一个右值,因为它只是一个地址

标签: cpointersreversec-stringsfunction-definition

解决方案


str是一个左值,因为它是内存中包含地址的地方。

str+i 只是一个右值,因为它只是一个地址


推荐阅读