C语言中如何定义两个数组,互不干扰?

unsigned char xdata dofly[256]={........}
unsigned char xdata dofly1[256]={ .......}
程序1中使用dofly[ ]
程序2中使用dofly1[ ]

你这个定义叫人看不懂啊,unsigned char是关键字,而后面怎么跟着两个用空格隔开的标识符?除非你另外声明了新的关键字unsigned char xdata!如果这里没有问题,你说的问题是不可能存在的;若确实如你所说,那你考虑别的原因,数组这样定义不会使两个数组打架!或者你把代码帖上来让大家为你解决问题。追问

代码在后面已经贴上了!!!现在问题已经找到,,,是没弄清楚RAM资源的问题:
STC89C52RC的总共RAM才512字节,其中xdata 定义只能用256字节,如果像我这样定义的话,其他的就没得空间了,是吧,这就解释了我在Proteus中仿真没得问题,就是下载到单片机里后面的256字节数据出错,不是我想要的。

追答

好。问题找到就行……

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-10-12
把你的代码放上来追问

追答

没看懂,dofly1只有256个字节大小,为什么会读到下标256之后的元素,dofly1的下标只能从0到255

追问

不好意思我现在在反复修改做实验,所以有些不对劲!!!
那是因为我把上面定义的两个数组合为一个了unsigned char xdata dofly[512];
因为EEPROM的原因要分两次写入,所以用了两个for循环。

追答

那现在应该没问题了吧

追问

后面的老是不对,,,用Proteus仿真是对的,,

追答

仿真。。无能为力。。。

追问

怎么说?

第2个回答  2014-10-12
没弄懂你说什么.追问

上面两个数组里面我已经写上了不同的数据,然后,分别用程序1把dofly里面的数据些到别的地方去,,其中出现了个问题:程序1把dofly里面的数据操作成功了,程序2操作失败,但是我把程序1用注释注释掉了,程序2才能操作成功?

相似回答