C 错误:表达式必须是可修改的左值
Posted
技术标签:
【中文标题】C 错误:表达式必须是可修改的左值【英文标题】:C error: expression must be a modifiable lvalue 【发布时间】:2020-11-07 17:19:30 【问题描述】:我在 C 中得到这个错误:表达式必须是可修改的左值
void bfInsertion(BloomFilter* bloomFilter,const char* elem,int elemLen)
int i = 1;
while (i <= elem)
elem[i] = 1;
i += 1;
return elem;
我知道问题出在elem[i] = 1;
的左侧,但我不明白如何正确处理。
Elem 是一个字节数组,我想把 1 放在第 i 位上。
这是伪代码:
1. i ←1;
2. while i ≤ k do
3. b[hi (delta)] ← 1;
4. i ← i + 1;
PS。我只能修改函数内部的内容,不能修改传递给它的内容
【问题讨论】:
去掉const
这个词,意思是常量。问题解决了。
【参考方案1】:
elem
是指向const char
的指针。所以你不能修改它。只需使其仅指向 char 即可。
【讨论】:
我不能。我只能修改函数内部的内容,不能修改我传递给它的内容! 在这种情况下,我必须说您不应该更改elem
变量中的任何内容。我认为您必须稍微澄清一下逻辑。你能解释一下你提供的伪代码吗?【参考方案2】:
elem 数组声明为const
,因此无法修改。要修改它,您需要删除 const
关键字。
然后您可以使用指针算法来更改您的值:
*(elem + i) = a value
虽然请记住,在 C 中,事物通常从零开始编号,因此对于第 i 这将是价值
*(elem + i - 1) = a value
【讨论】:
以上是关于C 错误:表达式必须是可修改的左值的主要内容,如果未能解决你的问题,请参考以下文章