簡體   English   中英

C 錯誤:表達式必須是可修改的左值

[英]C error: expression must be a modifiable lvalue

我在 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; 但我不明白如何正確地做到這一點。 Elem 是一個字節數組,我想在第 i 位上放 1。

這是偽代碼:

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

附注。 我只能修改函數內部的內容,而不能修改我傳遞給它的內容

elem是一個指向const char的指針。 所以你不能修改它。 只需讓它指向 char 即可。

elem 數組被聲明為const ,因此不能修改。 要修改它,您需要刪除const關鍵字。

然后,您可以使用指針算術來更改您的值:

*(elem + i) = a value

盡管請記住,通常在 C 中事物從零開始編號,因此對於第 i 個值,這將是

*(elem + i - 1) = a value

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM