4

いくつかのソース コードを見ていますが、コード内に完全には理解できないコードが含まれています。以下は、私が理解できない部分を模倣する基本的な疑似例です。

    float *myArray;

    object(){
        myArray = new float[20];
    }

    ~object(){   
    }

    void reset(){
        delete [] myArray;
    }

    void myMethod(float *array){
        for (int i = 0; i < 20; i++){
            array[i] = 0.5f;
        }
    }

別のメソッド本体には次のものがあります。

    void mySecondMethod(){
        myMethod(myArray + 10);
    }

これは私が理解できない 2 番目の方法です: 配列ポインターを必要とするパラメーターに配列ポインターと int を渡すとはどういう意味ですか? 私は自分の知識を強化しようとしているだけで、それについて検索しようとしてきましたが、情報が見つかりませんでした.

4

2 に答える 2

7

これは単に「この配列の 11 番目の要素のアドレス」を意味します。

これは、C のコア機能であるポインタ演算の例です(C++ のコア機能ですが、おそらく少し「低レベル」と見なされます)。

この式は、「 の最初の要素のアドレスを取得しmyArray、それに 10 個の要素のサイズを追加する」ことを意味します。

myArray[10]インデックス演算子は実際には のシュガーであるため、と同じように機能し*(myArray + 10)ます。

于 2013-10-22T15:24:39.910 に答える
5
myArray[10]  == *(myArray + 10)

&myArray[10] == myArray + 10
于 2013-10-22T15:24:40.087 に答える