C错误:表达式必须是可修改的左值

问题描述

我在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是一个字节数组,我想在第i个位上放置1。

这是伪代码

1. i ←1;
2. while i ≤ k do
3. b[hi (delta)] ← 1;
4. i ← i + 1;

PS。我只能修改函数内部的内容,而不能修改传递给它的内容

解决方法

elem是指向const char的指针。所以你不能修改它。只需将其指向char即可。

,

elem数组被声明为const,因此无法修改。要对其进行修改,您需要删除const关键字。

然后您可以使用指针算术来更改值:

*(elem + i) = a value

尽管请记住,通常情况下C中的事物从零开始编号 值应该是

*(elem + i - 1) = a value