如下面的代码所示,一组为Line及其相关的标量,另一组Array及其相关的变量,两组变量的用法几乎完全相同.
//数据表
unsigned char code Line[]={略.............};//起始地址0x0026;
unsigned char code Array[]={略...........};//起始地址0x0058;
//指针声明
unsigned char *pLine, *pBufferLine, *pBegin, *pEnd;
unsigned char *pArray, *pBufferArray;
结果程序中:
pLine=Line; //结果正确,调试窗口显示pLine为 C:0x0026;*pline也是正确值.
pArray=Array; //结果错误,调试窗口显示pArray为 I:0x58;*pArray为错误值.
当我用pLine来指向Array:
pLine=Array; //结果正确,调试窗口显示pLine为 C:0x0058;*pline也是正确值.
当我将pArray的声明移到pLine的声明语句里时.
pLine=Array;//结果错误,pLine为 I:0x58;*pLine为错误值.
pLine=pLine;//结果正确,pLine为 C:0x0058;*pLine为正确值.
旧的程序,没有Array相关的变量,已经用了一年了.是没有问题的.
约2星期前,添加了一些数据表和指针,结果出现了类似上述的问题.没找到原因,我怀疑是程序写乱了.
于是,重新再复制一个工程,换一种算法,但修改程序依然要添加数据表和相关指针.结果依然是新添加的指针不能正确指向.
请问:
1.哪出错了?是我出错还是keil7出错?
2.调试的Variable窗口里,指针变量值前的那个I: 或 C: 是什么意思? |