找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1905|回复: 11
收起左侧

请教一下C语言数组的使用问题

[复制链接]
ID:417328 发表于 2021-11-8 15:01 | 显示全部楼层 |阅读模式
5黑币
我在用数组进行控制打印机,但是我想用另一个数组中元素来当自模数组的下标,现在测试只要是第一个变量取数组里的元素就会出现异常,
想请教一下:数组的下标可以是另外一个数组的元素吗(16进制元素unsigned char类型的)。

回复

使用道具 举报

ID:313048 发表于 2021-11-8 16:58 | 显示全部楼层
是可以这样操作的,但是并不建议你这样使用,因为这样容易出现数组越界,如果不注意使用的话。
回复

使用道具 举报

ID:883242 发表于 2021-11-8 19:14 | 显示全部楼层
下标必须可以是其他数组元素,贴出错代码出来吧。
回复

使用道具 举报

ID:417328 发表于 2021-11-9 08:36 | 显示全部楼层
Hephaestus 发表于 2021-11-8 19:14
下标必须可以是其他数组元素,贴出错代码出来吧。

这是图片

字模数组

字模数组

程序两个数组

程序两个数组

打印出来的

打印出来的
回复

使用道具 举报

ID:592807 发表于 2021-11-9 09:03 | 显示全部楼层

2012里面为啥第2个数字2没事,第一个就有事?
回复

使用道具 举报

ID:313048 发表于 2021-11-9 10:59 | 显示全部楼层

那个异常的数组里面是print1[0]是你复制的时候打错了吧?还是说本身复制过来就这样。不应该是print1[1]吗?
首先你得确定你的print1[]这个数组里面的数字是没有问题的,如果是没错的话那就不应该有问题,因为数组是可以这样操作的,如果出来不对,肯定是你有程序对这个print1[]数组的操作产生的数据不对。
从你打印出来的那个2来看,很明显是取模的值向后移了,并不是从头开始读取,那么就应该是你的print1[]这个值取大了,为什么变大了肯定是你程序某个地方把值给改变了。
回复

使用道具 举报

ID:417328 发表于 2021-11-9 15:17 | 显示全部楼层
就是只要FontTable1206[]数组下标取另外一个数组的16进制元素就会出现乱码,是不是不能这样取。

这是我程序的三行代码

这是我程序的三行代码

对应数组打印的

对应数组打印的
回复

使用道具 举报

ID:624769 发表于 2021-11-9 15:41 | 显示全部楼层

你把,你在 地板  发的 这两条代码的   正常的数组,出现异常的数组, Ctrl + F5   Debug  之后,看看出来的汇编代码,到底有什么差别,可以方便找到出错原因。
回复

使用道具 举报

ID:417328 发表于 2021-11-9 16:24 | 显示全部楼层
188610329 发表于 2021-11-9 15:41
你把,你在 地板  发的 这两条代码的   正常的数组,出现异常的数组, Ctrl + F5   Debug  之后,看看出 ...

大佬看一下
51hei图片20211109162158.png
51hei图片20211109162313.png
回复

使用道具 举报

ID:417328 发表于 2021-11-9 16:33 | 显示全部楼层
我想问一下:unsigned char zifu[16]={0X30,0X31,0X32,0X33,0X34,0X35,0X36,0X37,0X38,0X39,0X41,0X42,0X43,0X44,0X45};
这个数组的元素,如果要为A[]数组的下标。是不是得把zifu[]数组的元素变为整数才可以,刚才试了试把zifu[0]赋值给(int)SHU。放进去也是乱码;
回复

使用道具 举报

ID:313048 发表于 2021-11-9 16:56 | 显示全部楼层
513489465 发表于 2021-11-9 16:33
我想问一下:unsigned char zifu[16]={0X30,0X31,0X32,0X33,0X34,0X35,0X36,0X37,0X38,0X39,0X41,0X42,0X43 ...

你为啥一定要在【】里面去运算,你完全可以在外面先运算之后再作为下标使用啊,你调试肯定要确定每一步都没有问题才对啊,你这只看最后结果去确定哪里出错是什么个操作?  
基本的调试都不会吗?
unsigned char  temp;
temp = (zifu-0x20)*12+N;  你先确定这个temp对不对你再去考虑显示的那个取值啥的问题不行?
非得一次性全部搞出来,没有中间过程,觉得这样写很顺眼?
基本的调试都不懂,明明能仿真  还问这么简单的问题。
回复

使用道具 举报

ID:624769 发表于 2021-11-9 21:05 | 显示全部楼层
test.png

试一下效果
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表