0

我有三组具有不同数据的数组

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

您的分析错了,pp不是,const而是指向的值ppconst(即*ppconst)。

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

如果你希望 pp 是 const ,因为指向的地址是 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 回答