0

異なるデータを持つ3セットの配列があります

const UINT16 array1[4] = {1,2,3,4};   

const UINT16 array2[4] = {3,2,2,4};

const UINT16 array3[4] = {8,7,2,4};   //This is not PIN code, :-)

...

void example(void)
{

    UINT16 * pp;

    UINT16 data;

    pp = array1;

    data = pp[0];

    pp = array2;

    data = pp[3];

    pp = array3;

    data = pp[2];

    //and rest of code, this is snipped version of my larger code

}

dspIC33 で、「警告: 代入によりポインター ターゲット タイプから修飾子が破棄されます」というメッセージが表示される

グーグル検索からの印象に基づいて、私はこのようにするかもしれません....

void example(void)
{

    const UINT16 * pp;

    pp = array1;

    pp = array2;

    pp = array3;

    //and rest of code, this is snipped version of my larger code

}

それでは、アドレスデータを格納するpp変数を固定値にしますか?(つまり、ROM メモリ内)?

正しい方法は何ですか?可能であれば、データを const メモリに保持することをお勧めします。

4

1 に答える 1

2

あなたの分析は間違っていますが、ppisconstが指す値ppは is const(つまり is *pp)constです。

const UINT16 * pp; // means pp is a pointer to a const UINT16 value

指すアドレスが const であるため pp を const にしたい場合は、次のように記述する必要があります。

UINT16 * const pp; // means pp is a const pointer to a UINT16 value

ポインターの定数とポイントされた値の両方が必要な場合は、次のように記述する必要があります。

const UINT16 * const pp; // means pp is a const pointer to a const UINT16 value.
于 2013-10-21T12:26:00.367 に答える