繁体   English   中英

尝试更改char *指针位置时出现“错误:表达式必须是可修改的左值”

[英]“Error: expression must be a modifiable lvalue” while trying to change char* pointer location

我正在用C编写一个消除前导空格的小函数,但这给了我“表达式必须是可修改的左值”

char str1[20];
strcpy (str1, otherStr);

for (int i = 0; i < strlen(str1); i++)
{
    if (!isspace(str1[i]))
        str1 = &(str1[i]);
}

我在这里做错了什么? (是的,otherStr已定义)

您的代码中没有char *指针,该指针可能会更改。 数组不是指针。 您无法“更改”其位置。

在C语言数组中,对象本身是不可修改的左值,这是错误措辞的出处。

char *str1 = malloc(20);
// or
// char s[20];
// char * str1 = s; // note the lack &s
// or
// char *str1 = alloca(20);
strcpy (str1, otherStr);

for (int i = 0; i < strlen(str1); i++)
{
    if (!isspace(str1[i]))
        str1 = &(str1[i]);
}

您的代码无法正常工作,因为当char str1[20] str1不是变量-在大多数情况下,它是指针文字,类似于(void *)0x0342 你不能做0x0342 = 7; 因此您也无法分配给数组名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM