1. ホーム
  2. c

[解決済み] 警告: 代入はポインター ターゲット タイプから修飾子を破棄します。

2022-02-06 15:10:48

質問

以下のコードを書きました。

void buildArrays(char *pLastLetter[],int length[], int size, const char str[]) {

    int i;
    int strIndex = 0;
    int letterCounter = 0;

    for (i=0; i<size; i++) {

        while ( (str[strIndex] != SEPERATOR) || (str[strIndex] != '\0') ) {
            letterCounter++;
            strIndex++;
        }
        pLastLetter[i] = &str[strIndex-1];
        length[i] = letterCounter;
        letterCounter = 0;
        strIndex++;
    }
}

で上記の警告が表示されるのですが pLastLetter[i] = &str[strIndex-1];

pLastLetter is a pointers array that points to a char in str[].

なぜそうなるのか、どうすれば直るのか、どなたかご存知ですか?

解決方法は?

まあ、あなた自身が言ったようにね。 pLastLetter の配列です。 char * のポインタを使用し、一方 str の配列です。 const char . その &str[strIndex-1] 式は、タイプ const char* . を割り当てることはできません。 const char* の値を char * ポインタを使用します。それは const-correctness の規則に違反することになります。実際、あなたがやっていることはC言語のエラーです。Cコンパイラは伝統的に、古いレガシーコードを壊さないように単なる "warning" として報告しています。

どうすればいいかというと...。それは、あなたが何をしようとしているかによります。以下のどちらかを行います。 pLastLetter の配列 const char* を削除するか const から str .